我一直试图了解互动'是什么意思?贝壳。我在网上阅读了很多资料,并通过手册页 - 调查部分。
所以我特别想提出一些简单的问题:
1)如何启动非交互式shell?是不是说' bash --login' ?
2)我无法弄清楚我在交互式shell中可以做些什么,而我在shell脚本中无法做到(所有这些材料一直都说shell脚本会在非交互式shell中运行)
3)当我在GUI中启动终端时,在那里运行的shell是非登录交互式shell
4)我可以在交互式shell中运行shell脚本吗
答案 0 :(得分:3)
如Bash手册中所述:
交互式shell是在没有非选项参数且没有标准输入和错误的-c选项的情况下启动的 两者都连接到终端(由isatty(3)确定),或者以-i选项开始。 PS1已设置且$ - 包括i if bash是交互式的,允许shell脚本或启动文件来测试这种状态。
对于你的问题:
1)如何启动非交互式shell?这是说'bash --login'吗?
基本上大多数情况下,您可以通过使用脚本运行shell或使用-c
选项运行shell来完成此操作。如果shell没有运行脚本,并且shell重定向其输入,那么如果输入结束,shell将自动退出。
2)我无法弄清楚我在交互式shell中可以做些什么,而我在shell脚本中无法做到(所有这些材料一直都说shell脚本会在非交互式shell中运行)
仅提示自然不显示没有太大区别。作业控制也未启用。只有当Bash以交互方式执行时才会运行rc文件~/.bashrc
。基本上shell会尝试以不应该与终端交互的方式运行,以使其正常工作而不会挂在其他地方。
3)当我在GUI中启动终端时,在那里运行的shell是非登录交互式shell
至少默认情况下它肯定是一个交互式shell。
4)我可以在交互式shell中运行shell脚本吗
如果您的意思是当前的shell本身,请使用.
或source
。 shell脚本结束时会返回提示符。