next up previous contents
Next: 一些內定變數 Up: 變數函數與模組化寫作 Previous: 中括號的變數取代   Contents

環境變數

普通的變數 如果Bourne shell, korn shell下用

$ export var

c shell, turbo c shell用

$ setenv var

則這個變數就變成一個環境變數。在C裡面的

main(int argc, char **argv, char **envp)

我們可以在shell裡設環境變數,而這個值是每個由這個shell fork出的程式, 經由envp都看得到的。這個argv, envp指的都在virtual memory的下面stack 往上長的開始處。請看拙作''用Open Source tools開發軟體''。 所以shell也不過是一個"User space的C program",環境變數藏在C image user space最下面,也可以從getenv這個library function call拿到。 所以一般光設變數,沒有設環境變數沒有辦法把值告訴其它的程式。 這邊要注意的是原本的Bourne shell的export沒有支援

$ export var=value

的寫法,所以看到一些shell scripts為了portable起見都用

$ var=value
$ export var


Cyril Huang 2002-06-14