Environment-Variables

設置子shell的環境變數

  • February 5, 2021

我知道我可以使用這樣的環境變數執行命令:

FOO=bar mycommand

我知道我可以像這樣在子shell中執行命令:

(firstcommand && secondcommand)

但是我可以以某種方式將這兩者結合起來嗎?

FOO=bar (firstcommand && secondcommand)

給出:

sh: syntax error: unexpected "("

至少在busybox shell(ash)中。

編輯: Kusalananda 建議FOO=bar sh -c 'first && second'這確實是一個解決方案。但是,我也對替代答案感興趣,因為我喜歡 subshel​​l 語法,因為它不需要轉義引號。

單程:

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.

引用自:https://unix.stackexchange.com/questions/392050