跳至內容

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 可執行文件本身的路徑也可能不同。

參考文獻

[編輯]