env是一条在Unix下的命令, 用于在重建的环境中运行程序。
范例
以下命令行会将当前环境变量输出到标准输出:
$ env
以下命令行会在不包含任何环境变量的情况下创建一个新的 Shell:
$ env -i /bin/sh
以下命令行执行应用程序 xcalc,并将环境变量 DISPLAY 设置为 "foo.bar:1.0",从而使其显示在指定的显示器上:
$ env DISPLAY=foo.bar:1.0 xcalc
不过,这种对 env 的用法通常并非必需,因为大多数 Shell 都支持直接在命令前设置环境变量,例如:
$ DISPLAY=foo.bar:1.0 xcalc
env 还可用于脚本的Shebang行,以便通过 PATH 查找解释器。例如,以下是一个 Python 脚本的代码:
#!/usr/bin/env python3
print("Hello, World!")
在此示例中,/usr/bin/env 是 env 命令的完整路径。环境不会被修改。
需要注意的是,也可以不使用 env,而是直接指定 python 解释器的完整路径。采用这种方法的问题在于,不同计算机系统上的具体路径可能有所不同。使用示例中的 env 时,解释器会在脚本运行时被搜索并定位(更准确地说,env 会调用系统调用 execvp,由其负责查找并启动解释器)。这提高了脚本的可移植性,但同时也增加了选错解释器的风险,因为它会在可执行文件搜索路径中的每个目录中查找匹配项。此外,这种方法也存在类似的问题:不同机器上的 env 可执行文件本身的路径也可能不同。
参考文献
评论 (0)