Bash手册说(帮助页面,我的重点):
当Bash调用外部命令时,该变量
$_
将设置为命令的完整路径名,并在其环境中传递给该命令。
和(特殊参数):
_
(
$_
,下划线。)在shell启动时,设置为用于调用在环境或参数列表中传递的正在执行的shell或shell脚本的绝对路径名。随后,在扩展后,扩展到上一个命令的最后一个参数。还设置为用于调用每个执行的命令的完整路径名,并放置在导出到该命令的环境中。检查邮件时,此参数保存邮件文件的名称。
在bash shell中,我运行:
$ bash $ export | grep '_='
根据手册,
_
应该是新bash shell的环境变量。export
应该输出新bash shell的所有环境变量,但不输出_
。所以我想知道_
新bash shell的环境变量是否是?实际上,在任何bash shell中,都会发生相同的情况
$ export | grep '_='
什么都不输出 所以我想知道
_
bash shell的环境变量是否曾经存在吗?为了比较:
$ dash $ export | grep '_=' export _='/bin/dash'
我的帖子的灵感来自Mike的评论和Stephane的回复。
bash -c export | grep _=
(来自Bash)将显示父外壳如何调用该bash
命令,即使$_
在父窗口中未设置该命令也是如此。
export
是内置的,但是如果使用printenv _
,它将向您显示如何调用它:/usr/bin/printenv
在此系统上。