Shell

是否可以在使用者空間中將環境變數從子級傳遞給父級?

  • October 22, 2020

正如標題所說,我希望能夠從子程序(通常是腳本)更改父程序(特別是 shell)中的環境變數。/dev/pts/id從試圖從子腳本導出的偽終端key=value,如果可能的話,必須以某種方式將導出的變數傳遞給父級?

echoingcmd > /proc/$$/fd/0不執行cmd,只在shell終端模擬器中查看命令,當然在子shell中使用$(cmd)而不是cmd執行,並且export不向父程序添加變數。

  1. 我更喜歡在孩子方面完成所有工作。
  2. 我在評論中被問到,我想要實現什麼?這是一個普遍的問題,我正在嘗試使用肯定的答案來傳遞由(父)shell 執行(生成)的腳本中的變數,以便使用者可以從添加的變數中受益,而無需任何進一步的工作。例如,我想讓一個腳本安裝一個應用程序,應用程序目錄應該添加到父 shell 路徑中。

不,這是不可能的。

環境變數只能從父級傳遞給子級(作為環境導出/繼承的一部分),反之則不行。

您可以通過文件或命名管道將變數值從子程序傳輸到其父程序。

這是一個理論上最簡單的例子:

子程序:

echo ${variable} >/tmp/file

父程序:

read variable </tmp/file

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