Env

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)

  • 还没有评论,来抢沙发吧。