Shell
是否可以在使用者空間中將環境變數從子級傳遞給父級?
正如標題所說,我希望能夠從子程序(通常是腳本)更改父程序(特別是 shell)中的環境變數。
/dev/pts/id
從試圖從子腳本導出的偽終端key=value
,如果可能的話,必須以某種方式將導出的變數傳遞給父級?echoing
cmd > /proc/$$/fd/0
不執行cmd
,只在shell終端模擬器中查看命令,當然在子shell中使用$(cmd)
而不是cmd
執行,並且export
不向父程序添加變數。
- 我更喜歡在孩子方面完成所有工作。
- 我在評論中被問到,我想要實現什麼?這是一個普遍的問題,我正在嘗試使用肯定的答案來傳遞由(父)shell 執行(生成)的腳本中的變數,以便使用者可以從添加的變數中受益,而無需任何進一步的工作。例如,我想讓一個腳本安裝一個應用程序,應用程序目錄應該添加到父 shell 路徑中。
不,這是不可能的。
環境變數只能從父級傳遞給子級(作為環境導出/繼承的一部分),反之則不行。
您可以通過文件或命名管道將變數值從子程序傳輸到其父程序。
這是一個理論上最簡單的例子:
子程序:
echo ${variable} >/tmp/file
父程序:
read variable </tmp/file