You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让alert命令自动在每个Bash命令执行后运行?

实现Bash命令执行后自动触发alert的方案

嘿,这个需求其实用Bash自带的特性就能轻松搞定,不用折腾复杂的shim工具~

核心方案:利用PROMPT_COMMAND环境变量

Bash里的PROMPT_COMMAND是个非常实用的变量——它会在每次命令执行完毕、准备显示下一个终端提示符之前自动运行你指定的命令,完全符合你“命令执行完成后触发alert”的需求。

临时生效(当前终端会话)

直接在终端里执行以下命令,之后所有前台命令执行完毕后都会自动调用alert:

PROMPT_COMMAND+="alert;"

永久生效(所有终端会话)

把上面的命令添加到你的Bash配置文件里(比如~/.bashrc或者~/.bash_profile),这样每次打开终端都会自动生效:

# 自动在每个前台命令执行后触发alert通知
PROMPT_COMMAND+="alert;"

补充:处理后台任务的情况

如果你还需要监控后台任务(比如./long_running_task &)的完成通知,上面的PROMPT_COMMAND就不太够用了——它会在后台任务被放到后台时立刻触发,而不是等任务真正完成。这种情况下可以用trap捕获CHLD信号:

trap 'alert' CHLD

不过要注意:这个方式会在每个后台子进程结束时都触发一次alert,如果同时运行多个后台任务,可能会收到多次通知,你可以根据自己的实际场景调整逻辑。

为什么之前的方案是命令前触发?

你提到之前找到的方案仅支持命令前运行,大概率是用了trap DEBUG——这个陷阱是在命令执行之前触发的,和你的需求刚好相反,所以用PROMPT_COMMAND才是正确的方向。

内容的提问来源于stack exchange,提问作者michaelsnowden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:01:43