作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果在终端中运行eval "$BASH_COMMAND"
,它将崩溃,终端窗口将消失。我无法理解为什么此特定命令使bash
崩溃。
奇怪的是,当我运行echo "$BASH_COMMAND"
时,会发生这种情况:
$ echo "$BASH_COMMAND"
echo "$BASH_COMMAND"
$BASH_COMMAND
没有值:
"$BASH_COMMAND"
bash: "$BASH_COMMAND": command not found
最佳答案
$BASH_COMMAND
确实具有一个值:当前正在执行的命令。这在trap
处理程序等情况下很有用,因此该处理程序可以找出陷阱触发时正在执行的命令。但是,当您将$BASH_COMMAND
用作常规命令的一部分时,事情就会变得怪异,混乱和混乱。让我们看看您给出的示例:
echo "$BASH_COMMAND"
BASH_COMMAND
变量的值正好是字符串echo "$BASH_COMMAND"
,因此,当shell解析命令行时,它将扩展变量引用,并提供等效项:echo 'echo "$BASH_COMMAND"'
"$BASH_COMMAND"
BASH_COMMAND
的值正是字符串"$BASH_COMMAND"
,因此在扩展后,它等于:'"$BASH_COMMAND"'
PATH
中,然后将其作为有效的命令名称。我不特别建议这样做。)eval "$BASH_COMMAND"
BASH_COMMAND
的值是字符串eval "$BASH_COMMAND"
,因此在扩展后,它等于:eval 'eval "$BASH_COMMAND"'
eval
命令的作用是接受其参数并将其作为shell命令运行,包括所有常规解析。因此,它运行命令:eval "$BASH_COMMAND"
$BASH_COMMAND
,结果是:eval 'eval "$BASH_COMMAND"'
eval
命令解析并运行:eval "$BASH_COMMAND"
关于bash - 为什么eval “$BASH_COMMAND”使bash崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55134746/
如果在终端中运行eval "$BASH_COMMAND",它将崩溃,终端窗口将消失。我无法理解为什么此特定命令使bash崩溃。 奇怪的是,当我运行echo "$BASH_COMMAND"时,会发生这种
我是一名优秀的程序员,十分优秀!