ssh <host> <command>Sözdizimini kullanarak doğrudan bir SSH ana bilgisayarında bir komut çalıştırdığımda .bashrc, .bash_profile(veya .profile) çıktısını görüyorum ancak çıktısını görmedim .
Örneğin, aşağıdaki komutu her iki dosyanın üstüne yerleştirirsem,
echo ${BASH_SOURCE[0]}
ve el ile kaynak .bash_profile( .bashrcsırayla hangi kaynaklar ), göreceğim
$ . .bash_profile
.bash_profile
.bashrc
Bu, ssh <host>komutun biçimini kullanarak SSH aracılığıyla uzaktan bu bilgisayara oturum açıp açmadığımı gördüğüm çıktı . (Ve .bash_profilegeçici olarak başka bir yere koyarsam , bu çizgilerin hiçbiri yankılanmaz.)
Ancak, doğrudan uzak makinede ssh <host> <command>şeklinde bir komut yürütürsem ssh, çıktı şöyle görünür:
$ ssh <host> echo foo
/home/rlue/.bashrc
foo
Anladığım kadarıyla .bash_profileve arasındaki fark .bashrc, birincisinin giriş kabukları için , ikincisinin etkileşimli, girişsiz kabuklar için olmasıdır .
Aşağıdakileri tamamladım:
ssh <host>Sadece kaynakları.bash_profileise,ssh <host> <command>sadece kaynaklar.bashrc, yani- birincisi bir giriş kabuğu ve ikincisi değil.
Bu sonuçlar doğru mu? Neden ssh <host> <command>etkileşimli, giriş yapmayan bir kabuk olarak değerlendiriliyor? SSH komutu yürütmek için hala uzak makinede oturum açmıyor mu?
.bashrchata verirken, benzer satırlar hata .bash_profilevermedi. Sorun teşkil eden hatları düzeltmeden önce tutarsızlığı araştırma fırsatı buldum.
.bashrc? Bu dosyanın çıktı üretmesi gerekmez. 'Den herhangi bir çıktı.bashrc, taşıma olarak ssh kullanan tüm araçları kırabilir.