Linux命令:env的实例介绍

120 阅读1分钟

`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环境的地方使用