名稱

env - 在重建的環境中執行程式

概述

env [選項]... [-] [名稱=值]... [ 命令 [引數列表]...]

描述

在環境中將每個指定名稱的環境變數設為指定的值,並執行給定命令。
必選引數對長短選項同時適用。
-i, --ignore-environment
不帶環境變數啟動
-0, --null
使每行輸出以 NUL 字元結束,不新增換行符
-u, --unset=名稱
從環境中移除指定環境變數
-C, --chdir=指定目錄名稱
將工作目錄修改為指定的目錄名稱
-S, --split-string=S
處理並將 S 字串分割為多個引數;用於向 shebang 行傳遞多個引數
--block-signal[=訊號]
阻擋向指定命令傳遞指定的訊號
--default-signal[=訊號]
將對指定訊號的處理方式重置為預設方式
--ignore-signal[=訊號]
將對指定的一種或多種訊號的處理方式設定為什麼都不做
--list-signal-handling
向標準錯誤輸出非預設的訊號處理方式
-v, --debug
為每個處理流程輸出詳細資訊
--help
顯示此幫助資訊並退出
--version
顯示版本資訊並退出
單獨的“-”隱含選項 -i。如果沒有給定命令,則輸出重建後的環境。
引數中的訊號可以是類似 'PIPE' 這樣的訊號名稱,也可以是如 '1' 這樣的訊號編碼。所有已知訊號均包括其中。如需指定多個訊號,可以使用半形逗號隔開。

選項

-S/--split-string 在指令碼中的用法

-S 選項可以在指令碼中指定多個引數。例如,執行一個名為 1.pl的指令碼,其第一行如下所示:
#!/usr/bin/env -S perl -w -T
...
將會執行 perl -w -T 1.pl .
如果不加 '-S' 引數,指令碼可能執行失敗並輸出以下錯誤:
/usr/bin/env: 'perl -w -T': 沒有那個檔案或目錄
請閱讀完整文件以瞭解更多細節。

--default-signal[=訊號] 的用法

該選項可以將一個訊號的處理方式設定為其預設行為,這是傳統的 shell trap 命令無法實現的。下面的粒子確保 seq 能被 SIGPIPE 訊號所終止,無論該訊號在被呼叫的命令的程序中是如何被處理的。
 
sh -c 'env --default-signal=PIPE seq inf | head -n1'

注意

POSIX 的 exec(2p) 手冊頁有以下內容:
"許多現有的應用程式都錯誤地假定它們啟動時接收訊號的行為均為預設值且為非阻塞模式。因此,最佳實踐是除非有明確的理由,否則在跨 exec 執行時不要阻塞或忽略訊號,尤其是不要在跨 exec 執行任意的(即並非與你的程式碼緊密合作的)程式時阻塞訊號。"

作者

由 Richard Mlynarik、David MacKenzie 和 Assaf Gordon 編寫。

報告錯誤

GNU coreutils 的線上幫助: <https://www.gnu.org/software/coreutils/>
 
請向 <https://translationproject.org/team/zh_CN.html> 報告翻譯錯誤。

版權

Copyright © 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
 
本軟體是自由軟體:您可以自由修改和重新發布它。在法律允許的範圍內,不提供任何保證。

參見

sigaction(2), sigprocmask(2), signal(7)
完整文件請見: <https://www.gnu.org/software/coreutils/env>
 
或者在本地使用: info '(coreutils) env invocation'

本頁面中文版由中文 man 手冊頁計劃提供。
 
中文 man 手冊頁計劃: https://github.com/man-pages-zh/manpages-zh

Recommended readings

Pages related to env you should read also: