Bu biraz karmaşık. Her şeyden önce, ayrıntılar ne tür bir kabuk çalıştırdığınıza bağlıdır. Kendimi intihal etmek için :
Bir terminal emülatörü açtığınızda ( gnome-terminalörneğin), etkileşimli, giriş yapmayan bir kabuk olarak bilinen şeyi yürütüyorsunuz .
Makinenize komut satırından giriş yaptığınızda veya böyle bir komut su - usernameçalıştırdığınızda, etkileşimli bir giriş kabuğu çalıştırıyorsunuzdur .
Grafiksel olarak giriş yaptığınızda, tamamen farklı bir şey çalıştırıyorsunuzdur. Detaylar sisteminize ve grafik ortamınıza bağlı olacaktır, ancak genel olarak, giriş bilgilerinizle ilgilenen grafik kabuğudur . Çok sayıda grafik kabukları (varsayılan Ubuntu dahil) okuyacak /etc/profileve ~/.profilehepsi değil.
Son olarak, bir kabuk betiğini çalıştırdığınızda, etkileşimli olmayan, giriş yapmayan bir kabukta çalıştırılır .
Başlatıldığında bash'ın okuyacağı dosyalar, çalıştığı kabuğun türüne bağlıdır. Aşağıdaki man bash( VAYIR madeninin) İNCELEME bölümünün bir kısmıdır :
Bash etkileşimli bir giriş kabuğu olarak veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında , önce bu dosya varsa / etc / profile dosyasındaki komutları okur ve yürütür . Bu dosyayı okuduktan sonra , bu sırayla ~ / .bash_profile, ~ / .bash_login ve ~ / .profile ifadelerini arar ve var olan ve okunabilen ilk komuttan komutları okur ve yürütür. --Noprofile seçeneği, kabuk bu davranışı engellemeye başladığında kullanılabilir.
Bir zaman interaktif kabuk olan bir giriş kabuğu değil başlatıldığında, bash okur ve gelen yürütür komutları /etc/bash.bashrc ve ~ / .bashrc , bu dosyalar varsa. Bu --norc seçeneği kullanılarak engellenebilir. --Rcfile dosya seçeneği bash'yi /etc/bash.bashrc ve ~ / .bashrc yerine dosyadan komutları okumaya ve yürütmeye zorlar.
Bunlar başlatma dosyaları. Ayrıca, /etc/environmentküresel çevresel değişkenleri ayarlayabileceğiniz bir yere de sahipsiniz, ancak kaynaktan ziyade okunuyor (içindeki komutlar yerine getirilmiyor ancak değişken tanımları ayarlanmış).
Şimdi, gördüğünüz tebrik yine başka bir şey. Bu ayarlanmış /etc/motdve üzerinden görüntülenir pam_motd. Açıklandığı gibi man motd:
/ Etc / motd içeriği, başarılı bir oturum açmadan sonra pam_motd (8) ile gösterilir, ancak oturum açma kabuğunu çalıştırmadan hemen önce görüntülenir.
"Motd" kısaltması "günün mesajı" anlamına gelir ve bu dosya tam olarak bunun için kullanılmıştır (tüm kullanıcılara postadan çok daha az disk alanı gerektirir).
Debian GNU / Linux'ta /run/motd.dynamic içeriği de görüntülenir. Bu dosya, önyüklemede /etc/init.d/motd tarafından üretilir.
Mesajı silmek için /etc/motddosyayı boşaltın ve /etc/init.d/motdvarsa hiçbir şey tarafından oluşturulmadığından emin olun .
Her neyse, gösterdiğiniz çıktıya dayanarak, oturum açıyor gibi görünüyorsunuz, sshbunun anlamı etkileşimli bir giriş kabuğu kullanıyorsunuz , bunun ne anlama geldiğine bakın. Yani, özet olarak, önemsediğiniz şeyler, giriş yaparken kaynaklanır (ve bu sırayla):
- SSH arka plan programı,
pam_motdPAM kütüphanesinin modülü aracılığıyla içeriğini gösterir /etc/motd. Via pam_envmodül, bu ortam değişkenleri ayarlar /etc/environmentve ~/.pam_environment.
- Bir giriş kabuğu başlatılır ve aşağıdaki dosyalar sırayla okunur:
/etc/profile
/etc/bash.bashrc(varsayılan Ubuntu /etc/profilekaynakları /etc/bash.bashrc).
~/.bash_profile. Burada okunabilecek diğer dosyalar ( ~/.profileve ~/.bash_login) yok sayılır, çünkü ~/.bash_profilevarlar.
export SET_IN_ETC_PROFILE=yesde/etc/profile,export SET_IN_HOME_ZSHRC=yesiçinde~/.zhshrc(Ben zsh kullanıcısıyım) yeniden başlatma Sonra ... vb, ve güzelenv|grep SET_INsize tüm hikayeyi anlatacağım. Hangi değişkenlerin masaüstü uygulamaları tarafından görüldüğünü görmek için (çizgi veya WM'den