我运行 bash 脚本。我想从终端和使用“在终端中运行”的 GUI 运行它们,并在运行 interactive 后离开bash
。在这里简单地解释一下输出:添加read -rn1
。
问题 X:我想要一个“干净”的解决方案,如果脚本从终端运行并且如果从 GUI 运行
,我可以在最后使用带有 bash 的相同终端来关闭它。exit
我可以添加bash -i
,但如果从终端运行,则需要两个exit
来关闭终端。exec bash -i
结果相同。
脚本中有没有办法检查它是否是通过“在终端中运行”从 GUI 启动的?
每条评论添加 1 条:
ps aux | grep aaaa # while script started from GUI was running
mint 53293 0.1 0.0 11216 3356 pts/3 Ss+ 21:58 0:00 /bin/bash /home/mint/aaaaa.sh
注意到与从终端开始的区别是Ss+
而不是S+
.
我假设您的 bash 脚本已命名
/path/to/mybashscript.sh
用于
ps
查找mybashscript.sh
($0
如果在脚本中运行);包括state/stat
用于识别特定状态的列:或另一种过滤
grep
线的方法:根据您的评论,差异是由于添加了
s
:s is a session leader
对于 GUI 方式,Ubuntu 没有那种从文件管理器启动脚本来检查的方式。从
man ps
,状态码如下: