Tarihsel olarak, giriş yaptığınızda (metin konsolunda başka ne var?) Ve birçok amaca hizmet ettiğinizde profil dosyaları ( /etc/profileve ~/.profile) çağrıldı:
- Oturum için ortam değişkenlerini ve diğer parametreleri (ör. Umask) ayarlayın.
- Oturumun başında ek programlar çalıştırın (örn. E-posta bildirimi).
- Kabuktan farklıysa (örneğin başka bir kabuk veya X Penceresi) oturum için programı çalıştırın.
- Terminal parametrelerini ayarlayın (örn.
stty).
- Kabuk parametrelerini ayarlayın (örn. Takma adlar).
Tüm bu amaçlar daha sonraya kadar ayrı olarak tanımlanmadı. Profil komut dosyaları, yalnızca etkileşimli bir oturumda (terminal etkileşimi, diğer programları başlat) mantıklı olan şeyler yapabildiğinden, uzak kabuk çağırma ( rsh ) başlatıldığında , rsh markaları uzak kabuğu bir giriş kabuğu olarak çağırmamaya karar verdi, böylece profil komut dosyaları yürütülmez. (Bazı sürümlerinde rshduzak kabuğu oturum açma kabuğu olarak çalıştırma seçeneği vardır.) Ssh, rsh'in yerine geçmesi için bu davranışı kopyaladı.
Profil komut dosyalarınızın yürütülmesini istiyorsanız, bunları açıkça çağırabilirsiniz.
ssh 127.0.0.1 '. /etc/profile; . ~/.profile; ydisplay'
.Profil komut dosyalarını kabuğun içine yükleme komutuna dikkat edin: bunlar dış bir program değil, o kabuğun içinde yürütülecek komutlardır.
Tüm kullanıcılar için küresel bir ortam değişkeni ayarlamak istiyorsanız, birçok sistemde başka yöntem vardır: yerine onu içinde tanımlamanın /etc/profile, onu tanımlamak /etc/environment. Bu dosya pam_envmodül üzerinden okunur ; çoğu Linux dağıtımı onu okuyacak şekilde ayarlanmıştır.
Giriş kabuğunuz bash ise, başka bir olasılık daha vardır. Normalde, ortam değişkenlerini.bashrc (etkileşimli kabuklu bir terminalden geçmeniz dışında X oturumlarında ayarlanmayacağı için) ayarlamamalısınız, çünkü bir metin konsolunda veya üzerinde etkileşimli olarak oturum açarsanız ayarlanmazlar. ssh, çünkü başka bir programın içinde bir kabuk çağırırsanız özel ayarları geçersiz kılarlar). Ancak bash'ın hiç anlamadığım garip bir özelliği var: ~/.bashrciki alakasız durumda okuyor :
- giriş kabukları olmayan etkileşimli kabuklarda;
- giriş kabukları olmayan etkileşimli olmayan kabuklarda, bash
rshdveya tarafından çağrıldığını düşünüyorsa sshd.
Ssh üzerinde bir komut çalıştırdığınızda, ikinci durumdasınız demektir. Profilinizi okuyarak /etc/profileve .profileburadan okuyacak şekilde ayarlayabilirsiniz .bashrc. Aşağıdaki kodu ekleyin ~/.bashrc:
case $- in
*i*) :;; # this is an interactive shell, fine
*) # This is not an interactive shell! This must be a non-interactive remote shell session.
. /etc/profile; . ~/.profile
return;;
esac
ydisplayişe yarıyor mu? doesssh 127.0.0.1 /usr/app/cpn/bin/ydisplayişi?