next up previous
Next: 我要如何將 csh 的 stdout 與 stderr 導向到不同的地方呢? Up: 初學者可能會問的基本問題 Previous: 為什麼我用 "rsh host command" 會有一些奇怪的訊息出現?

我要怎要用程式或者是在 shell script 中設定目前所用的 shell 的環境變數或改變所在的目錄?

若沒有做一些特殊安排是做不到的。因為,當我們造出一 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)。



Tan Koan-Sin
1999-03-02