【发布时间】:2020-12-10 10:59:47
【问题描述】:
致谢:也许我误解了“环境”的含义。
man page for env 声称env - [command](或env -i [command])应该在空环境中运行command。测试此行为,PATH 是一个环境变量(即“环境”的一部分)。但是,唉:
➜ ~ env - echo $PATH
/home/user/.nvm/versions/node/v15.3.0/bin:/home/user/.deno/bin:/usr/local/lib/node/nodejs/bin:/home/user/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
与
相同➜ ~ echo $PATH
/home/user/.nvm/versions/node/v15.3.0/bin:/home/user/.deno/bin:/usr/local/lib/node/nodejs/bin:/home/user/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
那么,发生了什么事?其他一些环境变量也会出现这种情况,例如 $SHELL 和 $USER。
那么,有人可以定义“环境”吗?env实际上在使用env - [command] 或env -i [command] 时做了什么。
请注意,env - PATH= echo $PATH 会产生无法在路径上找到 echo 的预期结果。但是,对我来说很奇怪,我必须将该环境变量显式设置为一个空字符串,因为我表面上是在运行 [command] 之前清除我的环境。
奖金混乱:
env env 打印我环境的所有变量,而env - env 产生空输出(有道理...环境应该是ignored,但这似乎与env - echo $PATH 打印我的环境的PATH 不一致。)
【问题讨论】:
标签: linux environment-variables