我在命令行中发送了一个 printenv 命令,看到其中一个变量如下:
_=/usr/bin/printenv
我现在这样做:
mo@mo-Toshiba ~/Workspace $ printenv _
/usr/bin/printenv
但是当尝试在此变量上调用 echo 时,我得到以下结果:
mo@mo-Toshiba ~/Workspace $ echo $_
_
发生了什么?为什么 echo 不将其视为变量?(例如 $PATH 或 $PWD)
答案1
它是一个变量。shell 变量_
每次运行命令时,shell 都会更新它,以包含前一个命令的最后一个参数。
它通常不有用,但它可以让您编写别名或函数来对“与上一个命令相同的文件(或其他对象)”执行某些操作。
该变量还被添加到子进程的环境中。它包含传入 shell 的命令名称(PATH
查找之前)。