2012-07-17 150 views
0

任何人都可以告訴我什麼是登錄shell和交互式shell以及它們各自讀取哪些配置(etc/profile,etc/bashrc,.bash_profile ...)?登錄shell和交互式shell?

我看到這樣的一些解釋: 登錄shell是其參數爲零的第一個字符是 - 的一個,或者是一個以--login選項開頭的登錄shell。 一種交互式外殼是一個沒有非選項參數和 開始,而不需要-c選項,其標準輸入和錯誤都連接到 終端(如通過isatty(3)確定),或者一個開始與-i 選項。 PS1被設置,$ - 包括我如果bash是交互式的,允許 shell腳本或啓動文件來測試這種狀態。

但是,這更困惑!

回答

1

系統上的man bash命令(INVOCATION部分)將介紹所有這些內容,並介紹在何時讀取哪些文件。

+0

感謝您的提示,但是當我調用bash(已經登錄)時,它是一個交互式shell,它應該讀取.bashrc的權利?但我的.bashrc不是,除非我手動來源。我不知道爲什麼? – shi70 2012-07-17 04:05:09

+0

是的,應該在這一點上閱讀。它是否直接位於你的主目錄('ls〜/ .bashrc')?是否有任何'BASH_ *'種類的環境變量被設置? 「bash」究竟是如何調用的,以及從哪裏('哪個bash')? – 2012-07-17 04:14:47

0

那麼,如果你不信任手冊頁,請嘗試使用strace。

strace -o/tmp/tr -f bash 
exit 
grep open /tmp/tr | grep $HOME 

對於我來說,這表明:

18316 open("/home/sethrobertson/.bashrc", O_RDONLY) = 3 

是什麼顯示你?