~/.bashrcvà /etc/bash.bashrcđược chạy mỗi khi một bashvỏ tương tác được bắt đầu.
Ngược lại, ~/.profilevà /etc/profileđược chạy mỗi khi bất kỳ shell đăng nhập nào được bắt đầu. Vì vậy, nó không phải là một bashvỏ, nhưng nó phải là một vỏ đăng nhập (và nhiều bashtrường hợp vỏ không phải là vỏ đăng nhập ).
- Một
bashvỏ là một cái vỏ mà chương trình cung cấp vỏ nó là bash, chứ không phải là một số chương trình khác, chẳng hạn như dash.
- Shell đăng nhập là một shell được khởi động tự động do hậu quả của việc đăng nhập, để cung cấp giao diện người dùng (đồ họa hoặc dòng lệnh) cho đăng nhập. Khi một vỏ đăng nhập được thoát, đăng nhập chấm dứt.
Do đó, việc đưa ra một lời khen bổ sung các mục vào PATHtrong một bashrctệp sẽ:
Không làm gì khi vỏ không bash, thường là như vậy. Ví dụ: PATHsẽ không được sửa đổi khi bạn đang ở trong phiên đăng nhập đồ họa. Hãy nhớ rằng, PATHkhông chỉ được sử dụng bởi các chương trình dòng lệnh.
Nối nó nhiều lần với sự có mặt của bashvỏ sò. Vì vậy, nếu bạn bắt đầu một shell trong shell - điều này rất phổ biến, vì nhiều lý do - thì bạn sẽ có nhiều ~/binmục được xếp chồng lên nhau PATH. Điều này làm cho PATHbiến môi trường khó đọc và đôi khi cũng làm giảm hiệu suất.
Đây sẽ là không mong muốn. Vì vậy, sẽ là sai lầm khi đặt điều này trong một bashrctập tin; nó thực sự thuộc về ~/.profile. ~/.profilelà nơi thích hợp cho:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Các shell không đăng nhập có các shell đăng nhập (hoặc một cái gì đó hoạt động như shell đăng nhập) là cha mẹ của chúng và kế thừa hầu hết các biến môi trường của chúng, bao gồm PATH, từ shell đăng nhập này. Vì vậy, việc đưa các lệnh sửa đổi đường dẫn vào ~/.profileyêu cầu bạn đăng xuất và đăng nhập lại để chúng có hiệu quả, nhưng nó cũng ảnh hưởng đến môi trường của các shell không đăng nhập (cũng như môi trường cho các chương trình không phải là shell, vì mọi chương trình đều có tập hợp các biến môi trường - được gọi là "môi trường" của nó - được kế thừa từ tiến trình cha của nó).