若沒有做一些特殊安排是做不到的。因為,當我們造出一 child process 時,此 process 會繼承其 parent 的變數與所在的目錄。在這個 child process 只能改到自己的變數與所在目錄而無法影響到其 parent。
要達到此目的, parent process 要與 child process 有所溝通。當 child process 要改變變數值時得把要改變的變數及其內容寫到一個講好 的地方,讓 parent process 去讀取, 並改變 parent process 的變數。
另一個做法則是寫一個 shell script,然後在 Bourne shell 或 Korn shell 中用 ".",在 C shell 中用 source 去執行那個 shell script。 若此 sript 名為 "myscript" :
在 Bourne shell 或 Korn shell 中就用
. myscript在 C shell 中則用
source myscript若你想做的只是要改變所在目錄或是設定一個環境變數,那使用 C shell 中的 alias 或是 Bourne/Korn shell 中的函數就可達成你的目的。可參 考"要怎麼設定 prompt 才會顯示出目前所在的目錄"一節中的做法。
Thomas Michanek (xtm@telelogic.se) 提供一個更詳細的解答 ( ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/script-vs-env)。