Có nhiều loại vỏ khác nhau. Shell thực thi lệnh SSH là một shell không tương tác, trong khi shell thông thường của bạn là shell đăng nhập hoặc shell tương tác. Mô tả sau đây, từ người đàn ông bash:
Một shell đăng nhập là một cái có ký tự đầu tiên của đối số
zero là một - hoặc một bắt đầu với tùy chọn --login.
Một vỏ tương tác được bắt đầu mà không có tùy chọn
đối số và không có tùy chọn -c có đầu vào tiêu chuẩn
và lỗi đều được kết nối với thiết bị đầu cuối (như đã xác định
bằng isatty (3)) hoặc bắt đầu bằng tùy chọn -i. PS1 là
đặt và $ - bao gồm i nếu bash tương tác, cho phép
shell script hoặc một tập tin khởi động để kiểm tra trạng thái này.
Các đoạn sau mô tả cách bash thực thi
tập tin khởi động. Nếu bất kỳ tập tin nào tồn tại nhưng không thể
đọc, bash báo lỗi. Dấu ngã được mở rộng trong tệp
tên như được mô tả dưới đây dưới Tilde Expansion trong
Phần mở rộng.
Khi bash được gọi như một vỏ đăng nhập tương tác, hoặc như
một vỏ không tương tác với tùy chọn --login, nó đầu tiên
đọc và thực thi các lệnh từ tệp / etc / profile, nếu
tập tin đó tồn tại Sau khi đọc tập tin đó, nó tìm kiếm
~ / .bash_profile, ~ / .bash_login và ~ / .profile, trong đó
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. Tùy chọn --noprofile có thể
được sử dụng khi vỏ được bắt đầu để ức chế hành vi này
ior
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 shell tương tác không phải là shell đăng nhập là
đã bắt đầu, bash đọc và thực thi các lệnh từ ~ / .bashrc,
nếu tập tin đó 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. 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.
Khi bash được bắt đầu không tương tác, để chạy shell
tập lệnh, ví dụ, nó tìm biến BASH_ENV trong
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 hiện. Bash hành xử như thể lệnh sau
Đã được thực hiện:
nếu [-n "$ BASH_ENV"]; sau đó . "$ BASH_ENV"; fi
nhưng giá trị của biến PATH không được sử dụng để tìm kiếm
cho tên tập tin.