~/.bashrc
và /etc/bash.bashrc
được chạy mỗi khi một bash
vỏ tương tác được bắt đầu.
Ngược lại, ~/.profile
và /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 bash
vỏ, nhưng nó phải là một vỏ đăng nhập (và nhiều bash
trường hợp vỏ không phải là vỏ đăng nhập ).
- Một
bash
vỏ 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 PATH
trong một bashrc
tệp sẽ:
Không làm gì khi vỏ không bash
, thường là như vậy. Ví dụ: PATH
sẽ không được sửa đổi khi bạn đang ở trong phiên đăng nhập đồ họa. Hãy nhớ rằng, PATH
khô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 bash
vỏ 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 ~/bin
mục được xếp chồng lên nhau PATH
. Điều này làm cho PATH
biế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 bashrc
tập tin; nó thực sự thuộc về ~/.profile
. ~/.profile
là 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 ~/.profile
yê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ó).