如果未插入此代码,则命令文件(双击时)不起作用...为什么?

时间:2017-05-13 21:33:04

标签: bash macos exec nohup

当我双击我的.command文件时,它会读取每一行,直到它命中nohup命令终止应用程序(终端),因为它在后台运行。

现在,当在脚本顶部输入以下命令时,整个脚本都可以正常工作。为什么会发生这种情况?

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>/Users/$username/Desktop/log.out 2>&1

1 个答案:

答案 0 :(得分:0)

当我在脚本中运行此命令时,显然是这样的:

nohup osascript -e 'tell application "Terminal" to do script "'"$DIR"'"' & pkill -f -a Terminal

使用pkill终止应用程序会为整个脚本带来问题。因此,破坏了SIGHUP信号。我的解决方案如下......

trap '' 1 # this blocks sighup so we don't die when terminal is closed

感谢来自Freenode Chat - #bash频道的 izabera