Unix/Shell 和子 Shell 簡介
當我們開啟一個終端會話時,一個 Shell 會為我們啟動。這就是為什麼我們在終端視窗中看到一個提示符。
在一個 Shell 中,我們可以透過呼叫 Shell 程式檔案或可執行檔案來開啟另一個 Shell - 子 Shell。例如,假設您已經打開了一個 Shell,一個普通的 Shell sh。您會看到這個

在這個 Shell 的提示符下,我可以呼叫一個新的子 Shell。我可以使用命令 bash 呼叫 bash Shell。新的 Shell 可以使用命令 exit 關閉。如果我呼叫一個 bash 子 Shell,我會看到類似的東西

如果我使用 exit 關閉這個 Shell,我會看到

一個 Shell 提供
- 一個提示符,供使用者透過啟動、管理、互動和結束程序來進行通訊
- 一個用於程序和變數的容器
當您呼叫一個子 Shell 時,在這個 Shell 中啟動的任何程序都包含在其中。除非它們被提交到一些持久儲存 - 可能寫入硬碟上的檔案或從父 Shell 匯出到新 Shell,否則任何建立的資料項都會隨著 Shell 的關閉而消失。匯出不在此處介紹:我們暫時假設變數在建立它們的 Shell 中消失。
為了使這更具體,請考慮這個序列。我們從終端會話中的任何 Shell 開始,建立一個 Shell 變數,就像這樣
$ MYVARIABLE="This is the original shell"
要檢查內容,我們可以使用 echo,並在變數名前加上 $,就像這樣
$ echo $MYVARIABLE
現在我們呼叫一個 子 Shell。我們將使用 bash Shell。像這樣
$ bash
這將啟動一個新的 bash 子 Shell,我們可以從更改的提示符中看到,並且在子 Shell 中,我們建立了一個 Shell 變數,就像這樣
bash% MYVARIABLE="This is the subshell. When it closes, this variable is destroyed!"
要檢查這個變數的內容,我們使用 echo,就像之前一樣
bash% echo $MYVARIABLE
在繼續之前,請確保您知道這將顯示什麼。
現在,如果我們 exit,bash 子 Shell 將關閉,我們將返回到原始 Shell。算出輸入以下內容的結果
$ echo $MYVARIABLE
將是什麼。
