it-swarm-vi.com

bashrc hay bash_profile?

Tôi biết sự khác biệt giữa hai tập lệnh đăng nhập bash:

.bashrc chỉ được chạy bởi các shell "không đăng nhập".

.bash_profile (hoặc .bash_login hoặc .profile) được thực thi bởi các shell "đăng nhập".

Có ai có một số ví dụ hay về những thứ phù hợp hơn cho việc thực hiện chỉ đăng nhập, sao cho tôi chỉ đưa chúng vào .bash_profile, nhưng chúng sẽ không thực sự có ý nghĩa trong .bashrc?

(Tôi biết hầu hết nguồn của chúng tôi .bashrc trong số .bash_profile, vì vậy dường như không có nhiều điểm trong câu hỏi ngược lại ...)

49
Don Faulkner

.bashrc dành cho shell không đăng nhập, tôi tránh mọi lệnh phát ra màn hình. Tôi cũng đã gặp phải những trải nghiệm trong đó các câu lệnh echo trong .bashrc sẽ khiến các lệnh sftp và rsync không thành công (và có thể cả các lệnh scp nữa).

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

Ngoài ra, bạn thường sẽ không chạy ssh-agent từ Shell không tương tác. Vì vậy, tôi có cái này trong .bash_profile.

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
24
Stefan Lasiewski

Byobu là một ví dụ tuyệt vời về thứ mà bạn không bao giờ nên đặt trong .bashrc.

Mặt khác, nó sẽ tự chạy đệ quy trong mỗi một trong các 'thiết bị ảo' của nó ;-)

Bạn có thể thử nó mặc dù, đó là loại vui vẻ.

Đó là lý do tại sao bạn đặt nó trong .profile, do đó, byobu (thực sự là một trình bao bọc xung quanh màn hình) chỉ được tải, một lần, tại thời điểm đăng nhập. Và byobu có thể bắt đầu các phiên bash tương tác mới.

8
Ralf