我正在编写一个 bash 脚本(echo.sh),目的是在执行命令之前对其进行回显。我在 .bashrc 中获取此脚本 (echo.sh)。但是对于使用 bash shebang 在脚本文件(tmp.sh)中运行的命令,它不会执行。下面是我到目前为止的代码
回声
#!/usr/bin/env bash
shopt -s extdebug; get_hacked () {
[ -n "$COMP_LINE" ] && return # not needed for completion
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # not needed for prompt
local this_command=$BASH_COMMAND;
echo $this_command;
};
trap 'get_hacked' DEBUG
当我打开外壳并运行任何命令时 - 它可以工作。但是对于脚本文件中的内容,它不起作用。
一些进一步的尝试:
- 我尝试在脚本文件 (tmp.sh) 中获取 .bashrc 文件 - 没有用。
- 我在 tmp.sh 中获取了 echoo.sh 并且它起作用了。
所以,我试图理解
- 如果我只是在 .bashrc 中为在脚本中运行的东西提供脚本,为什么它不起作用?
- 当#2 做时,为什么不进一步尝试#1 工作。
最后,我能做些什么,这样我就不必在所有脚本文件中获取 echoo.sh 即可。可以在一个地方获取我的脚本并更改一些设置,使其适用于所有场景。