bash:return 从程序执行开始但在退出脚本后关闭程序
bash: return from program execution but close program after exiting script
我想在我的 Mac 上执行一个 bash 脚本,它将启动命令行程序 caffeinate
。但是如果我这样开始:
#!/bin/bash
caffeinate
不会return,终端会被屏蔽。那不是我想要的。但另一方面,如果我关闭终端,程序也应该退出。我怎样才能做到这一点?
我已经尝试过 return
和 exit
但无法得到我想要的东西。
这是由 Terminal.app 引起的,其中现有的解决方法是 go into Terminal's preferences 并将 "When the shell exits:" 设置为 "Close window",或者将 "Ask before closing:" 设置为 "Never" 或 "Only if there are other processes other then the login shell and:" 并将您的程序添加到关闭 window 时不提示用户的程序列表中。(不确定第二部分是否适用于脚本,也不确定是否有使用更多 bash 和 AppleScript 代码的更通用的解决方法,以便最终用户无需更改任何首选项。)
试试像这样的东西:
#!/bin/bash
trap 'kill -TERM $caffeinate_pid' EXIT
caffeinate &
caffeinate_pid=$!
此脚本需要源代码(使用 source
或 .
),以便陷阱位于调用 shell 的上下文中(您要终止的调用用于触发咖啡因的终止)。
我想在我的 Mac 上执行一个 bash 脚本,它将启动命令行程序 caffeinate
。但是如果我这样开始:
#!/bin/bash
caffeinate
不会return,终端会被屏蔽。那不是我想要的。但另一方面,如果我关闭终端,程序也应该退出。我怎样才能做到这一点?
我已经尝试过 return
和 exit
但无法得到我想要的东西。
这是由 Terminal.app 引起的,其中现有的解决方法是 go into Terminal's preferences 并将 "When the shell exits:" 设置为 "Close window",或者将 "Ask before closing:" 设置为 "Never" 或 "Only if there are other processes other then the login shell and:" 并将您的程序添加到关闭 window 时不提示用户的程序列表中。(不确定第二部分是否适用于脚本,也不确定是否有使用更多 bash 和 AppleScript 代码的更通用的解决方法,以便最终用户无需更改任何首选项。)
试试像这样的东西:
#!/bin/bash
trap 'kill -TERM $caffeinate_pid' EXIT
caffeinate &
caffeinate_pid=$!
此脚本需要源代码(使用 source
或 .
),以便陷阱位于调用 shell 的上下文中(您要终止的调用用于触发咖啡因的终止)。