.bashrc
và KHÔNG phải.bash_profile
là kịch bản. Tệp cấu hình của chúng được lấy nguồn mỗi lần được thực thi theo một trong hai cách:bash
Phần HÓA ĐƠN của trang bash man có liên quan gì.
Một shell đăng nhập là một cái mà ký tự đầu tiên của đối số 0 là một -
hoặc một bắt đầu với --login
tùy chọn.
Một shell tương tác được bắt đầu mà không có đối số không phải tùy chọn và không có -c
tùy chọn có đầu vào và lỗi tiêu chuẩn được kết nối với các thiết bị đầu cuối (như được xác định bởi isatty(3))
, hoặc bắt đầu với -i
tùy chọn. PS1 được đặt và $-
bao gồm i
nếu bash
là tương tác, cho phép tập lệnh shell hoặc một tập tin khởi động để kiểm tra trạng thái này.
Các đoạn sau đây mô tả cách bash
thực hiện các tệp khởi động của nó. Nếu bất kỳ tệp nào tồn tại nhưng không thể đọc được, bash báo lỗi. Dấu ngã được mở rộng bằng tên tệp như được mô tả bên dưới trong
Mở rộng Tilde trong phần MỞ RỘNG .
Khi bash được gọi dưới dạng shell đăng nhập tương tác hoặc dưới dạng shell không tương tác với --login
tùy chọn, đầ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ó tìm kiếm ~/.bash_profile
,
~/.bash_login
và ~/.profile
, theo thứ tự đó, và đọc và thực thi các lệnh từ cái đầu tiên tồn tại và có thể đọc được. Các
--noprofile
tùy chọn có thể được sử dụng khi vỏ được bắt đầu để ức chế hành vi này.
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 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 --norc
tùy chọn. Các --rcfile file
tùy chọn sẽ buộc bash để đọc và thực hiện các lệnh từ tập tin thay vì ~/.bashrc
.
Bạn có thể kiểm soát khi chúng được tải thông qua các công tắc dòng lệnh --norc
và --noprofile
. Bạn cũng có thể ghi đè vị trí nơi chúng được tải từ sử dụng công --rcfile
tắc.
Như những người khác đã đề cập, bạn có thể bắt chước cách các tệp này được tải thông qua việc sử dụng source <file>
lệnh hoặc sử dụng . <file>
lệnh.
Tốt nhất nên nghĩ về chức năng này như sau:
- Bash bắt đầu với một môi trường trần
- bash sau đó mở một trong những tệp này (tùy thuộc vào cách nó được gọi là tương tác hoặc đăng nhập, và sau đó ...
- ... Từng dòng thực thi từng lệnh trong tệp ...
- khi hoàn thành cung cấp quyền điều khiển ở dạng dấu nhắc, chờ nhập
Phương thức gọi
Chủ đề này dường như thỉnh thoảng xuất hiện, vì vậy đây là một ít các cách khác nhau để gọi bash
và kết quả của chúng. LƯU Ý: Để giúp tôi thêm các thông báo "có nguồn gốc $ HOME / .bashrc" và "có nguồn gốc $ HOME / .bash_profile "cho các tệp tương ứng của họ.
cuộc gọi cơ bản
bash -i
$ bash -i
sourced /home/saml/.bashrc
bash -l
$ bash -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -il -or-bash -li
$ bash -il
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -c "..cmd .."
$ bash -c 'echo hi'
hi
LƯU Ý: Lưu ý rằng công -c
tắc không có nguồn nào cả!
vô hiệu hóa tập tin cấu hình khỏi bị đọc
bash --norc
$ bash --norc
bash-4.1$
bash --noprofile
$ bash --noprofile
sourced /home/saml/.bashrc
bash --norc -i
$ bash --norc -i
bash-4.1$
bash --norc -l
$ bash --norc -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash --noprofile -i
$ bash --noprofile -i
sourced /home/saml/.bashrc
bash --noprofile -l
$ bash --noprofile -l
bash-4.1$
bash --norc -i -or- bash --norc -l
$ bash --norc -c 'echo hi'
hi
Nhiều cách bí truyền hơn để gọi bash
bash --rcfile $ HOME / .bashrc
$ bash -rcfile ~/.bashrc
sourced /home/saml/.bashrc
bash --norc --rcfile $ HOME / .bashrc
$ bash --norc -rcfile ~/.bashrc
bash-4.1$
Những thất bại
bash -i -rcfile ~ / .bashrc
$ bash -i -rcfile ~/.bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: /home/saml/.bashrc: restricted: cannot specify `/' in command names
bash -i -rcfile .bashrc
$ bash -i -rcfile .bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: .bashrc: command not found
Có thể có nhiều hơn nhưng bạn có được điểm, hy vọng ....
Còn gì nữa không
Cuối cùng, nếu bạn quá say mê với chủ đề này mà bạn muốn đọc / khám phá thêm về nó, tôi khuyên bạn nên xem Hướng dẫn cho người mới bắt đầu Bash, cụ thể là phần: 1.2. Ưu điểm của Bourne Again SHell . Các phần phụ khác nhau theo đó, "1.2.2.1. Gọi" đến "1.2.2.3.3. Hành vi vỏ tương tác" giải thích sự khác biệt ở mức độ thấp giữa các cách khác nhau mà bạn có thể gọi bash
.