如何在每个 bash 命令后调用脚本

如何在每个 bash 命令后调用脚本

hey.sh是否可以在本示例中调用以每个 bash 命令命名的脚本?

例如,您输入lshit Enter 并 ls 运行,然后hey.sh就会运行。

然后你输入cd .. (或任何其他命令)、 cd 运行然后hey.sh将运行,依此类推。

答案1

PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND 如果设置,则在发出每个主提示之前将该值作为命令执行。


注意:环境变量与 shell 变量

默认情况下,PROMPT_COMMAND不是一个环境变量。这只是一个外壳变量

两种类型的变量都以相同的方式访问 ( "$variable*"),但是环境变量由子进程继承,而外壳变量不是。

惯例是大写环境变量+ 配置您的 shell 的 shell 变量(PROMPT_COMMAND 确实配置您的 shell),但将其他类型的变量保持小写。

巴什,您可以执行以下操作:declare -p找出变量是否已导出(=是环境变量):

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable

相关内容