我一直在努力理解“交互式”shell是什么意思。我在网上读了很多资料,也看过了手册页-调用部分。
因此,我特别想提出一些简单的问题:
1)如何启动非交互式shell?是说“bash--登录”吗?
2)我只是不知道在一个交互的shell中我还能做什么,而在一个shell脚本中我不能这样做(所有这些材料都说shell脚本将在一个非交互的shell中运行)。
3)当我在GUI中启动终端时,运行的shell是一个非登录的交互式shell吗?
4)我可以在交互式shell中运行shell脚本吗?
发布于 2014-07-14 08:54:04
正如“巴什手册”所解释的:
交互式shell是一个在没有非选项参数的情况下启动的,并且没有标准输入和错误都连接到终端(由isatty(3)确定)的-c选项,或者是使用-i选项启动的。PS1设置为$-,如果bash是交互式的,则包含i,允许shell脚本或启动文件测试此状态。
对于你的问题:
1)如何启动非交互式shell?是说“bash--登录”吗?
基本上,大多数情况下,您可以通过使用脚本运行shell,或者使用-c选项运行shell。如果shell不使用脚本运行,并且如果shell获得其输入重定向,则如果输入结束,shell将自动退出。
2)我只是不知道在一个交互的shell中我还能做什么,而在一个shell脚本中我不能这样做(所有这些材料都说shell脚本将在一个非交互的shell中运行)。
没有太大的区别,只是提示符自然没有显示。作业控制也未启用。只有当Bash以交互方式执行时,它才会运行rc文件~/.bashrc。基本上,当不与终端交互以使其正常工作,而不是挂在其他地方时,外壳就会以其应有的方式运行。
3)当我在GUI中启动终端时,运行的shell是一个非登录的交互式shell吗?
它当然是一个交互式的shell,至少在默认情况下是这样。
4)我可以在交互式shell中运行shell脚本吗?
如果您指的是当前shell本身,则是.或source。当shell脚本结束时,提示返回。
https://stackoverflow.com/questions/24732275
复制相似问题