Linux 中的 env 命令
env 命令可以用来传递环境变量,而不需要在外部环境(例如当前 Shell 中)设置它们。
假设你想运行一个 Node.js 应用,同时要为它设置名为 USER 的变量。
你可以运行
env USER=flavio node app.js此时,Node.js 应用可以通过 Node 的 process.env 接口访问 USER 这个环境变量。
你也可以通过附加 -i 参数,清除所有已经设置的环境变量:
env -i node app.js这种情况下,你有可能得到一个错误提示 env: “node”: 没有那个文件或目录,这是由于 Shell 用来查找共用命令路径的 PATH 变量已被卸除,导致 node 命令无法找到。
因此你需要把完整的路径传递给 node 程序:
env -i /usr/local/bin/node app.js我们用带有以下内容的 app.js 文件来试试:
console.log(process.env.NAME)
console.log(process.env.PATH)你将会看到这样的输出:
undefined此时你可以传递一个 env 变量:
env -i NAME=flavio node app.js然后输出会变成:
flavio
undefined去掉 -i 参数会让 PATH 变量在应用中再次可用:
如果不带参数运行 env 命令,它还可以用来列出所有环境变量:
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 -u HOME node app.js