答案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 手册