Yorumlanmasında bu akış
Bunu adam bashında buldum:
Bash etkileşimli bir giriş kabuğu veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, dosya varsa / etc / profilinden komutları okur ve yürütür.
Etkileşimli giriş kabuklarının okunduğunu belirtir /etc/profile(--noprofile olmadan)
Ayrıca, okuma seçeneği ile etkileşimli olmayan kabuklar--login/etc/profile
Yani bazı olası bırakmak gibi görünüyor giriş kabukları (hangi $0bir ile başlar -) olmak o etkileşimli olmayan (belki olarak basit gibi bir komut dosyasını çalıştırın date) okumamış olabilir (kaynak) /etc/profile.
Bu fikri onaylamak veya reddetmek için:
İlk olarak, ilk karakter olarak su -l -bir giriş kabuğu ile başlayan bir giriş kabuğu kullanmaya çalıştım , -ancak etkileşimli hale getiremiyorum (ve test etmek için testleri sunabiliyorum).
Gibi bir şey çağırmak
$ bash -c 'date' -bash
Bir giriş kabuğu olduğunu bildirmez (ilk karakter a olsa bile -).
Ayrıntıları ortaya çıkarmak için bunu deneyin:
$ bash -c 'echo "$0 $- ||$(shopt -p login_shell)||";date' -bash -bash hBc ||shopt -u login_shell|| Fri Aug 19 06:32:31 EDT 2016
$0Bir sahiptir-ilk karakter olarak, hiçbir oradaideğerinde (interaktif)$-ama bir olarak rapor edilmezlogin_shell(-u). Bu durumda, / etc / profile okunmadı, ancak bunun doğru test olduğundan emin değilim.
Ayrıca, bu soru için yeterince spesifik olmadan bu cevapta "nadir etkileşimli olmayan giriş kabuklarından" bahsedilmektedir .
Bu adam sonuç olduğunu /etc/profilehep okunur.
Özet tablosunu okuyun: hem etkileşimli hem de etkileşimli olmayan giriş kabukları okunur /etc/profile
Ve, bu sayfadaki örnekler doğruysa:
Some examples
$ su bob # interactive non-login shell
$ su - bob # interactive login shell
$ exec su - bob # interactive login shell
$ exec su - bob -c 'env' # non-interactive login shell
$ ssh bob@example.com # interactive login shell, `~/.profile`
$ ssh bob@example.com env # non-interactive non-login shell, `~/.bashrc`
Okunan exec su - bob -c 'env'raporların testi /etc/profile.
Kısacası:
Etkileşimli olmayan bir giriş kabuğuna sahip olmak mümkün mü (--login veya -l ile çağrılmaz)?
Ve eğer doğruysa, /etc/profiledosyayı okuyor mu?
Yukarıdakiler doğruysa, TÜM giriş kabuklarının [etkileşimli (veya değil)] okuma / etc / profilini (seçeneksiz) sonucuna varmalıyız --noprofile.
Not: / etc / profile öğesinin okunduğunu algılamak için dosyanın en başına şu komutu ekleyin:
echo "'/etc/profile' is being read"

--loginseçeneği kullanıyor . İkincisi için, eğerexec -a "-bash" "bash" <<<"shopt -p login_shell; echo $0 $-"alırsam (C qoutes kodlanmış)$'/etc/profile read\nshopt -s login_shell\nbash himBH'bu yüzden, bu giriş ama interaktif. Giriş yapmamız ve etkileşimli olmamamız gerekiyor . Kaçırdığım şey nedir?