混淆了 `printenv` 和 `declare`

混淆了 `printenv` 和 `declare`

我正在使用 macOS。我printenv对 感到困惑declare

重启后我立即运行这2个命令,无需任何其他后续设置。

printenv输出

PWD=/Users/soplus

这是合理的,因为这是我的登录系统的用户名。

declare -xp输出

declare -x PWD="/private/var/folders/78/ngsn15lj24s72n8hjnj4zkxr0000gn"

我猜这是由 vscode 设置的,我之前运行过“vscode interactive python”。

对于同一个环境变量,这两种设置有什么区别?

分别存储它们的配置文件在哪里?

答案1

printenv是一个外部命令。它准确打印“环境变量”中的内容

declare是 shell 内置的。它显示 shell 变量的设置。这些变量可能会或可能不会作为子进程的环境变量导出。

PWD 不是常规环境变量。每次执行命令时,shell 都会设置它cd。可以“手动”将其设置为不相关的内容,但下一个cd命令会将其重置。

相关内容