Có hai lý do liên quan tại sao bí danh không luôn hoạt động khi được đặt trong .profile
tệp. Đầu tiên là tệp .profile
(hoặc .bash_profile
) chỉ được chạy cho một vỏ đăng nhập. Nếu bạn đang bắt đầu bash trong một cửa sổ đầu cuối bên dưới X, trình giả lập thiết bị đầu cuối của bạn (ví dụ: gnome-termanl) có thể không chạy bash như một vỏ đăng nhập. [Hầu hết đều có tùy chọn để thay đổi điều này nếu bạn muốn nhưng mặc định (đối với gnome-termal) không phải là chạy nó như một vỏ đăng nhập.]
Shell sẽ là một vỏ tương tác và do đó .bashrc
sẽ được chạy.
Tuy nhiên, thông thường bash đã được chạy dưới dạng shell đăng nhập khi phiên X đang được bắt đầu. Vì vậy, nếu có các lệnh bí danh, .profile
chúng sẽ được thực thi cùng với việc thiết lập các biến môi trường như PATH, v.v. Khi cửa sổ đầu cuối được mở, một phiên bản bash mới được chạy để nhắc và thực thi các lệnh trong cửa sổ đầu cuối đó. Không giống như các biến môi trường, các bí danh không thể được xuất từ một phiên bản bash sang một biến mới được bắt đầu bởi nó. Vì vậy, các bí danh không được chuyển sang vỏ mới.
Để xem điều này, hãy thử thí nghiệm này:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
Lưu ý rằng .bashrc
không được chạy bởi bash khi nó được bắt đầu như một vỏ đăng nhập. Vì vậy, đặt bí danh của bạn ở đó sẽ không luôn hoạt động trừ khi bạn .bashrc
có nguồn gốc từ bạn .profile
, đó là một thực tế rất phổ biến.
gl
đâu? Nhà ga? GUI?