相关疑难解决方法(0)

$BASH_COMMAND 变量有什么用?

根据Bash 手册,环境变量BASH_COMMAND包含

当前正在执行或即将执行的命令,除非 shell 作为陷阱的结果正在执行命令,在这种情况下,它是在陷阱发生时正在执行的命令。

把那个陷阱角落放在一边,如果我理解正确的话,这意味着当我执行命令时,变量BASH_COMMAND包含该命令。这不是绝对清楚地表明变量是否是在执行命令后复位(也就是,只有avaialble命令正在运行,但不是之后),尽管有人可能会认为,既然是“命令当前正在执行或即将执行的” ,不是刚刚执行的命令。

但是让我们检查一下:

$ set | grep BASH_COMMAND=
$ 
Run Code Online (Sandbox Code Playgroud)

空的。我本来希望看到BASH_COMMAND='set | grep BASH_COMMAND='或者只是看到BASH_COMMAND='set',但空虚让我感到惊讶。

让我们试试别的:

$ echo $BASH_COMMAND
echo $BASH_COMMAND
$ 
Run Code Online (Sandbox Code Playgroud)

嗯,这是有道理的。我执行命令echo $BASH_COMMAND,因此变量BASH_COMMAND包含字符串echo $BASH_COMMAND。为什么这次有效,而之前无效?

让我们再做set一次:

$ set | grep BASH_COMMAND=
BASH_COMMAND='echo $BASH_COMMAND'
$
Run Code Online (Sandbox Code Playgroud)

所以等等。它在我执行该echo命令时设置的,之后没有取消设置。但是当我set再次执行时,BASH_COMMAND 没有设置为set命令。无论我在set这里执行命令的频率如何,结果都保持不变。那么,是否在执行echo …

command-line bash environment-variables

25
推荐指数
2
解决办法
5491
查看次数

标签 统计

bash ×1

command-line ×1

environment-variables ×1