答案1
顯然,一旦 shell 初始化,在命令列上使用set -i
或 的唯一結果就是更改 的值。只有當呼叫建立 shell時,該選項才有意義,在這種情況下,它將強制 shell 進行互動。set +i
$-
-i
bash
對 bash 原始程式碼的快速檢查表明,執行期間的互動式檢查引用了全域變量interactive
,該變數在初始化序列期間設置,然後不進行修改。僅set [+-]i
並$-
使用forced_interactive
全域。 (如果已設定或如 中所述,interactive
則將設為 true 。)forced_interactive
man bash
答案2
bash-1.14.7-14 的手冊頁中有 -i 選項的文件。 https://bugzilla.redhat.com/show_bug.cgi?id=1129
-i If the -i option is present, the shell is interactive.
互動式 shell 從 tty 上的使用者輸入讀取命令。除此之外,這樣的 shell 會在啟動時讀取啟動檔案、顯示提示並預設啟用作業控制。使用者可以與 shell 互動。執行腳本的 shell 始終是非互動式 shell。
更多資訊請參閱此處:
http://www.tldp.org/LDP/abs/html/intandnonint.html https://unix.stackexchange.com/questions/43385/what-do-you-mean-by-interactive-shell
補充:更多鏈接
關於非登入 shell 的一個非常好的答案
https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells
互動式 shell 的 bash 手冊