`env`命令的快速指南,用于运行命令和与环境变量互动
env 命令可以用来传递环境变量,而不需要在外部环境(当前的shell)中设置这些变量。
假设你想运行一个Node.js应用程序,并为其设置USER 变量。
你可以运行
env USER=flavio node app.js
而USER 环境变量将可以通过Node.js应用的process.env 接口访问。
你也可以使用-i 选项,运行该命令,清除所有已经设置的环境变量。
在这种情况下,你会得到一个错误,说env: node: No such file or directory ,因为node 命令是无法到达的,因为shell用来查找公共路径中的命令的PATH 变量没有设置。
所以你需要把完整的路径传给node 程序。
env -i /usr/local/bin/node app.js
用一个简单的app.js 文件试试,内容是这样的。
console.log(process.env.NAME)
console.log(process.env.PATH)
你会看到输出是
undefined
undefined
你可以传递一个环境变量。
env -i NAME=flavio node app.js
而输出结果将是
flavio
undefined
移除-i 选项将使PATH 在程序中再次可用。

env 命令也可以用来打印出所有的环境变量,如果运行时没有选项。
例如,它将返回一个所设置的环境变量的列表。
HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish
你也可以使用-u 选项,使你运行的程序内部无法访问某个变量,例如,这段代码将从命令环境中删除HOME 变量。
env 命令可以在Linux、macOS、WSL以及任何你有UNIX环境的地方使用