Câu trả lời:
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--norc
tùy chọn. Các--rcfile
tù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_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 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
PATH
biế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 bash
có 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ó .bashrc
và BASH_ENV
chỉ 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 sh
thự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 bash
khở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.
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 $ "
.profile
sau .bash_profile
? Bất kỳ logic?
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ụ:
alias ll='ls -l'
).ll='ls -l'
cho phép bạn gõ ll
để thực thi ls -l
lệnh.