什么是INTERACTIVE unix shell

时间:2014-07-14 08:21:58

标签: linux bash shell

我一直试图了解互动'是什么意思?贝壳。我在网上阅读了很多资料,并通过手册页 - 调查部分。

所以我特别想提出一些简单的问题:

1)如何启动非交互式shell?是不是说' bash --login' ?

2)我无法弄清楚我在交互式shell中可以做些什么,而我在shell脚本中无法做到(所有这些材料一直都说shell脚本会在非交互式shell中运行)

3)当我在GUI中启动终端时,在那里运行的shell是非登录交互式shell

4)我可以在交互式shell中运行shell脚本吗

1 个答案:

答案 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脚本结束时会返回提示符。