Saya tahu perbedaan antara dua skrip login bash:
.bashrc
dijalankan hanya oleh shell "non-login".
.bash_profile
(atau .bash_login
atau .profile
) dijalankan oleh shell "login".
Adakah yang punya beberapa contoh bagus tentang hal-hal apa yang lebih cocok untuk eksekusi dengan login saja, sehingga saya hanya memasukkannya .bash_profile
, tetapi tidak benar-benar masuk akal .bashrc
?
(Saya tahu sebagian besar dari kita sumber .bashrc
dari .bash_profile
, jadi sepertinya tidak ada banyak gunanya dalam pertanyaan sebaliknya ...)
Jawaban:
Karena a
.bashrc
adalah untuk shell 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 perintah scp juga).Juga, Anda biasanya tidak akan menjalankan ssh-agent dari shell non-interaktif. Jadi saya punya ini
.bash_profile
.sumber
.bashrc
mengganggu metode transfer file jarak jauh yang diimplementasikan melalui stream standar , solusinya adalah dengan menempatkan perintah seperti itu di bawah kode yang memeriksa apakah shell bersifat interaktif dan berlanjut hanya jika itu..bashrc
File default pengguna di Ubuntu, disalin dari/etc/skel/.bashrc
pada pembuatan akun, serta seluruh sistem/etc/bash.bashrc
, sudah berisi kode yang memeriksa dan kembali jika shell tidak interaktif (meskipun seseorang masih harus meletakkan perintah penghasil output seseorang di bawahnya ).Byobu adalah contoh yang bagus dari sesuatu yang tidak boleh Anda masukkan ke dalam
.bashrc
.Kalau tidak, ia akan menjalankan dirinya secara rekursif di setiap terminal virtualnya ;-)
Anda dapat mencobanya, itu agak menyenangkan.
Itu sebabnya Anda memasukkannya
.profile
, jadi byobu (yang benar-benar hanya membungkus layar) hanya dimuat, satu kali, pada saat login. Dan byobu sendiri dapat memulai sesi bash interaktif baru.sumber