Tệp .bashrc là gì?


100

Các shell Unix khi bắt đầu đọc .bashrctệp và thực thi các lệnh được viết trong đó. Tập tin này là gì và nó thực thi cái gì?


2
Hãy thử mở tệp trong trình soạn thảo văn bản - nó ở dạng văn bản thuần túy.
Will Bickford

Câu trả lời:


67

Trên thực tế, nó bashđặc biệt đọc .bashrc(và /etc/bash.bashrc). Có rất nhiều vỏ khác nhau.

Trang bash man (của Brian Fox và Chet Ramey; cũng là trang thông tin "Bash Startup Files" ) là tài liệu tham khảo chính thức:

Khi một vỏ tương tác không phải là vỏ đăng nhập được khởi động, bash sẽ đọc và thực thi các lệnh từ đó ~/.bashrc, nếu tệp đó tồn tại. Điều này có thể bị ức chế bằng cách sử dụng --norctùy chọn. Các --rcfiletùy chọn tập tin sẽ buộc bash để đọc và thực hiện các lệnh từ tập tin thay vì ~/.bashrc.

Ví dụ, khi bash được khởi động không tương tác, để chạy tập lệnh shell, nó tìm kiếm biến BASH_ENVtrong môi trường, mở rộng giá trị của nó nếu nó xuất hiện ở đó và sử dụng giá trị mở rộng làm tên của tệp để đọc và thực thi. Bash hành xử như thể lệnh sau được thực thi:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

nhưng giá trị của PATHbiến không được sử dụng để tìm kiếm tên tệp.

Các tập tin chỉ là lệnh shell. Nó thường được sử dụng để thay đổi lời nhắc, đặt biến môi trường và xác định thủ tục shell. Theo truyền thống, tệp .profileđược sử dụng cho mục đích này, nhưng bashcó rất nhiều tiện ích mở rộng nên nó cần tệp khởi động riêng cho người dùng muốn đặt bashism vào tệp khởi động.

" Không phải là vỏ đăng nhập " có nghĩa là những thứ như kịch bản khởi chạy và thường các cửa sổ đầu cuối được bắt đầu bởi các trình quản lý cửa sổ. Đôi khi tôi thiết lập các hệ thống * nix để có .bashrcBASH_ENVchỉ cần nguồn .profile. Miễn là bạn không đi lạc bên ngoài các lệnh shell POSIX thì bạn sẽ nhận được cùng một khởi tạo trong bất kỳ shell nào.

Nó đặc biệt có giá trị khi shthực sự bash, điều này đôi khi xảy ra. Để làm điều này sử dụng:

. .profile

Một lý do rất phức tạp là vì đôi khi mọi người đưa những thứ tạo ra đầu ra vào các tệp khởi động shell hoặc họ đặt các lời nhắc vô điều kiện. Điều này gây ra nhiều vấn đề khi chạy các chương trình shell và các lệnh backtick trong các ngôn ngữ, chưa kể đến system(3)từ các chương trình C. Cách thức bashkhởi động được thiết kế, tôi nghĩ, để có một tệp trong đó cài đặt đầu ra và nhắc nhở là OK và một tệp không có. Theo truyền thống, một bài kiểm tra thời gian chạy sẽ được thực hiện để phân biệt tính tương tác, ví dụ, kiểm tra xem liệu lời nhắc có được đặt không.


Câu trả lời tốt. Chỉ cần một số trích dẫn: Các tập tin chỉ là lệnh shell. Nó thường được sử dụng để thay đổi lời nhắc, đặt biến môi trường và xác định thủ tục shell.
smwikipedia

2
Có ai biết phần RC của .bashrc / .zshrc nghĩa là gì không?
CÔNG TRÌNH


Có lẽ RC có nghĩa là cấu hình thời gian chạy.
Mike Diehn

12

Khi Bash bắt đầu, nó thực thi các lệnh trong nhiều tập lệnh khác nhau.

Khi Bash được gọi như một vỏ đăng nhập tương tác, đầu tiên nó sẽ đọc và thực thi các lệnh từ tệp / etc / profile, nếu tệp đó tồn tại. Sau khi đọc tệp đó, nó sẽ tìm ~ / .bash_profile, ~ / .bash_login và ~ / .profile, theo thứ tự đó, đọc và thực thi các lệnh từ lệnh đầu tiên tồn tại và có thể đọc được.

Khi shell đăng nhập thoát, Bash đọc và thực thi các lệnh từ tệp ~ / .bash_logout, nếu nó tồn tại.

Khi một vỏ tương tác không phải là vỏ đăng nhập được khởi động, Bash đọc và thực thi các lệnh từ ~ / .bashrc, nếu tệp đó tồn tại. Điều này có thể bị ức chế bằng cách sử dụng tùy chọn --norc. Tùy chọn tệp --rcfile sẽ buộc Bash đọc và thực thi các lệnh từ tệp thay vì ~ / .bashrc.

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

Dưới đây là một số mẹo và mẹo:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

Chúng ta hãy thử đặt lời nhắc để nó có thể hiển thị ngày và tên máy chủ ngày hôm nay:

PS1="\d \h $ "

1
Tại sao là .profilesau .bash_profile? Bất kỳ logic?
Pacerier

10

Nó nên chứa các lệnh "khởi tạo" khác nhau cho trình bao của bạn, ví dụ:

  • Tạo các bí danh hữu ích (ví dụ alias ll='ls -l').
  • Thêm nhiều thư mục vào PATH.
  • Thiết lập các biến môi trường mới.

Sử dụng bí danh là gì?
dứa

2
@ pinnut: Bí danh là một cách để chạy lệnh, có thể dài, với lệnh ngắn hơn. Chẳng hạn, bí danh ll='ls -l'cho phép bạn gõ llđể thực thi ls -llệnh.
Wuffers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.