`env` 不是打印出当前 shell 中的环境,而是打印出 `env` 中接收到的环境吗?

`env` 不是打印出当前 shell 中的环境,而是打印出 `env` 中接收到的环境吗?

coreutils 手册说关于env命令

env [option]... [name=value]... [command [args]...]

如果在环境规范之后没有指定命令名称,则打印结果环境。这就像指定 printenv 程序一样。

是印刷环境所env特有的env,从某种意义上说, 的值_取决于env?例如,

$ env | grep '^_'
_=/usr/bin/env

是否env打印出当前 shell 的几乎所有导出环境,除了环境变量的值_被修改为特定的env

那么是env不是打印出当前shell中的环境,而是打印出内部接收到的环境env

谢谢。

答案1

env 在大多数 shell 中是一个单独的程序,因此它会打印从 shell 接收到的环境。

Bourne Shell 使用基于 shell 变量的环境管理系统。

启动时,它将环境导入到 shell 变量列表中。

创建或修改 shell 变量不会修改 shell 为新程序设置的环境。

  • 调用set打印内部 shell 变量就像set内置在外壳中一样

  • 调用env打印出口环境env与外部命令一样

shell 变量_是由 引入的ksh88。它保存着最后的命令。

相关内容