hey.sh
是否可以在本示例中调用以每个 bash 命令命名的脚本?
例如,您输入ls
hit 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