it-swarm-id.com

bashrc atau bash_profile?

Saya tahu perbedaan antara dua skrip login bash:

.bashrc dijalankan hanya oleh shell "non-login".

.bash_profile (atau .bash_login atau .profile) dieksekusi oleh shell "login".

Adakah yang punya beberapa contoh bagus tentang hal-hal apa yang lebih cocok untuk eksekusi hanya-masuk, sehingga saya hanya akan menempatkannya di .bash_profile, tetapi mereka tidak benar-benar masuk akal di .bashrc?

(Saya tahu sebagian besar dari kita sumber .bashrc dari .bash_profile, jadi sepertinya tidak ada banyak poin di pertanyaan yang berlawanan ...)

49
Don Faulkner

Karena .bashrc adalah untuk cangkang non-login, saya menghindari perintah yang bergema ke layar. Saya juga mengalami pengalaman di mana pernyataan gema di .bashrc akan menyebabkan perintah sftp dan rsync gagal (dan mungkin juga perintah scp).

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

Juga, Anda biasanya tidak akan menjalankan ssh-agent dari Shell non-interaktif. Jadi saya punya ini di .bash_profile.

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

Byobu adalah contoh yang bagus dari sesuatu yang tidak boleh Anda masukkan ke .bashrc.

Kalau tidak, ia akan menjalankan dirinya secara rekursif di setiap terminal virtualnya ;-)

Anda dapat mencobanya, ini agak menyenangkan.

Itu sebabnya Anda memasukkannya ke dalam .profile, jadi byobu (yang sebenarnya hanya membungkus layar) hanya dimuat, satu kali, pada saat login. Dan byobu sendiri dapat memulai sesi bash interaktif baru.

8
Ralf