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/profile
ve ~/.profile
hepsi 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/environment
kü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/motd
ve ü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/motd
dosyayı boşaltın ve /etc/init.d/motd
varsa 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, ssh
bunun 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_motd
PAM kütüphanesinin modülü aracılığıyla içeriğini gösterir /etc/motd
. Via pam_env
modül, bu ortam değişkenleri ayarlar /etc/environment
ve ~/.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/profile
kaynakları /etc/bash.bashrc
).
~/.bash_profile
. Burada okunabilecek diğer dosyalar ( ~/.profile
ve ~/.bash_login
) yok sayılır, çünkü ~/.bash_profile
varlar.
export SET_IN_ETC_PROFILE=yes
de/etc/profile
,export SET_IN_HOME_ZSHRC=yes
içinde~/.zhshrc
(Ben zsh kullanıcısıyım) yeniden başlatma Sonra ... vb, ve güzelenv|grep SET_IN
size 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