我想在我的Mac上执行一个bash脚本,该脚本将启动命令行程序caffeinate
。但是如果我像这样开始它:
#!/bin/bash
caffeinate
它不会返回,终端将被阻止。那不是我想要的。但另一方面,如果我关闭终端,程序也应该退出。我怎样才能做到这一点?
我已经尝试过玩return
和exit
,但没有得到我想要的。
尝试类似以下内容:
#!/bin/bash
trap 'kill -TERM $caffeinate_pid' EXIT
caffeinate &
caffeinate_pid=$!
此脚本需要获取(使用 source
或 .
(,以便陷阱位于调用 shell 的上下文中(您希望使用该调用 shell 终止以触发咖啡因终止(。
由 Terminal.app 引起的,其中现有的解决方法是进入终端的首选项并将"当shell退出时:"设置为"关闭窗口",并将"关闭前询问:"设置为"从不"或"仅当有其他进程,然后登录shell和:",并将您的程序添加到关闭窗口时不提示用户的程序列表中。不确定第二部分是否适用于脚本,也不确定是否有使用更多 bash 和 AppleScript 代码的更通用的解决方法,以便最终用户无需更改任何首选项。