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