2011-09-07 159 views
119

我想了解使用export命令。UNIX導出命令

我試過使用man export,但這個命令沒有手冊。

任何人都可以請幫我理解在UNIX中使用export嗎?

+0

它非常奇怪,它沒有一個手冊頁。我也沒有看到。 – Pinocchio

回答

177

當您執行程序時,子程序會從父級繼承其環境變量。例如,如果$HOME在父級中設置爲/root,那麼孩子的$HOME變量也設置爲/root

這隻適用於標記爲導出的環境變量。如果在命令行上設置變量,如

$ FOO="bar" 

該變量在子進程中不可見。除非你將其導出:

$ export FOO 

你可以(在老學校SH但沒有)這兩個語句合併成一個單一的一個在bash:

$ export FOO="bar" 

這裏展示的區別一個簡單的例子導出和非導出變量。爲了解發生了什麼,知道sh -c創建了繼承父shell的環境的子shell進程。

$ FOO=bar 
$ sh -c 'echo $FOO' 

$ export FOO 
$ sh -c 'echo $FOO' 
bar 

注:要得到shell內置命令使用help export幫助。 Shell內置命令是屬於您的shell的命令,而不是像/bin/ls這樣的獨立可執行文件。

13

的Unix

的命令的env,設置和printenv顯示所有的環境變量和它們的值。 env和set也用於設置環境變量,並且通常直接併入到shell中。通過將該變量名稱作爲命令的唯一參數,printenv也可用於打印單個變量。

在Unix中,還可以使用以下命令,但通常依賴於某個shell。

export VARIABLE=value # for Bourne, bash, and related shells 
setenv VARIABLE value # for csh and related shells 

你可以看看this

+3

歡迎來到StackOverflow。請注意,經典的Bourne shell將需要:'VARIABLE = value;導出VARIABLE',而不是立即分配和導出。C Shell中的'set'命令用於shell變量而不是環境變量; 'setenv'是'export'的對應物。 Bourne派生shell中的'set'命令打印所有變量,而不僅僅是導出(環境)變量。至少在歷史上,'env'命令是獨立於shell(不是內置的),儘管它可以很容易地被製作成內置的。它爲特定命令設置環境,而不是運行它的shell。 –

1

export用於設置環境變量。例如:

export EDITOR=pico 

將設置您的默認文本編輯器爲pico命令。