Environment-Variables
設置子shell的環境變數
我知道我可以使用這樣的環境變數執行命令:
FOO=bar mycommand
我知道我可以像這樣在子shell中執行命令:
(firstcommand && secondcommand)
但是我可以以某種方式將這兩者結合起來嗎?
FOO=bar (firstcommand && secondcommand)
給出:
sh: syntax error: unexpected "("
至少在busybox shell(ash)中。
編輯: Kusalananda 建議
FOO=bar sh -c 'first && second'
這確實是一個解決方案。但是,我也對替代答案感興趣,因為我喜歡 subshell 語法,因為它不需要轉義引號。
單程:
FOO=bar sh -c 'first && second'
這將為單個命令設置
FOO
環境變數。sh
設置多個環境變數:
FOO=bar BAZ=quux sh -c 'first && second'
另一種方法是
export
在子shell中創建變數和它。做export
內部子外殼確保外殼不會在其環境中獲取變數:( export FOO=bar; first && second )
總結(現已刪除)評論:
export
需要創建環境變數(而不是shell變數)。環境變數的問題是它們被子程序繼承。如果first
並且second
是查看其環境的外部實用程序(或腳本),則如果FOO
沒有export
.