环境变量 _

moe*_*sef 3 command-line environment-variables

我在命令行中发送了一个 printenv 命令,我看到其中一个变量如下:

_=/usr/bin/printenv
Run Code Online (Sandbox Code Playgroud)

我现在这样做:

mo@mo-Toshiba ~/Workspace $ printenv _
/usr/bin/printenv
Run Code Online (Sandbox Code Playgroud)

但是当试图在这个变量上调用 echo 时,我得到以下信息:

mo@mo-Toshiba ~/Workspace $ echo $_
_
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?为什么 echo 不将其视为变量?(即像 $PATH 或 $PWD)

Gil*_*il' 6

它是一个变量。该shell变量_被shell每次运行一个命令包含一个命令的最后一个参数时更新。

它不是经常有用,但它允许您编写别名或函数来对“与上一个命令相同的文件(或其他对象)”执行某些操作。

该变量也被添加到子流程的环境中。在那里,它包含在 shell 中传递的命令的名称(在PATH查找之前)。