互動式 shell 是什麼意思?

互動式 shell 是什麼意思?

UNIX:完整參考,第二版,作者:Kenneth H. Rosen 等人。

登入後可以使用 shell 的名稱作為命令來啟動另一個 shell;例如,要啟動 Korn shell,您可以在命令提示字元中鍵入 ksh。這種類型的 shell 不是登入 shell,您不必再次登入即可使用它,但它仍然是互動式 shell,這意味著您透過鍵入命令與 shell 進行互動(而不是使用 shell 進行互動)。如第20 章所述)。使用圖形介面時在終端機視窗中執行的 shell 實例也是互動式非登入 shell。當您啟動非登入 shell 時,它不會讀取您的 .profile、.bash_profile 或 .login 檔案(或 .logout 檔案),但它仍會讀取第二個 shell 設定檔(例如 .bashrc)。這意味著您可以透過啟動另一個 shell 實例來測試對 .bashrc 的更改,但如果您要測試對 .profile 或 .login 的更改,則必須登出然後重新登入才能查看結果。

我正在查看上面的內容,但我不明白互動式 shell 的意思。如果我使用終端,.profile 是否不會被讀取?

此外,當您說 bourne 不是互動式 shell 而 bash/csh 是互動式 shell 時,這是什麼意思?

答案1

互動式 shell 只是您用來鍵入命令並從這些命令獲取輸出的任何 shell 進程。也就是說,您與之互動的外殼。

因此,您的登入 shell 是互動的,就像您手動啟動的任何其他 shell 一樣,如您在問題中引用的摘錄中所述。相較之下,當您執行 shell 腳本時,將啟動一個非互動式 shell 來執行腳本中的命令,然後在腳本完成時退出。

Bourne shell 可以用作互動式 shell,就像bash或一樣tcsh。事實上,許多系統,例如 FreeBSD,都使用 shellsh作為預設使用者 shell。像是bashzsh、等現代 shelltcsh具有許多 Bourne shell 所沒有的功能,這使得它們在互動使用時更加舒適和方便(命令歷史記錄、完成等)。

互動式非登入 shell(即從另一個 shell 手動啟動的 shell 或透過開啟終端視窗啟動的 shell)不會讀取您的.login.profile檔案。這些只能由登入 shell(由login系統進程或 X 顯示管理器啟動的 shell)讀取和執行,因此它們包含的命令和設定僅在登入工作階段開始時套用一次。因此,當您啟動終端機時,它為您產生的 shell 不會讀取您的登入檔案(.login對於 c 樣式 shell,.profile對於 bourne 樣式 shell),但它會讀取.cshrc.bashrc檔案。

相關內容