Linux export的作用


1.基本功能

功能說明:設置或顯示環境變量。

語  法:export [-fnp][變量名稱]=[變量設置值]

補充說明:在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及於該此登陸操作。

參  數:
 -f  代表[變量名稱]中為函數名稱。 
 -n  刪除指定的變量。變量實際上並未刪除,只是不會輸出到后續指令的執行環境中。 
 -p  列出所有的shell賦予程序的環境變量。

2.shell與export命令

  用戶登錄到Linux系統后,系統將啟動一個用戶shell。在這個shell中,可以使用shell命令或聲明變量,也可以創建並運行 shell腳本程序。運行shell腳本程序時,系統將創建一個子shell。此時,系統中將有兩個shell,一個是登錄時系統啟動的shell,另一 個是系統為運行腳本程序創建的shell。當一個腳本程序運行完畢,它的腳本shell將終止,可以返回到執行該腳本之前的shell。從這種意義上來 說,用戶可以有許多 shell,每個shell都是由某個shell(稱為父shell)派生的。

  在子 shell中定義的變量只在該子shell內有效。如果在一個shell腳本程序中定義了一個變量,當該腳本程序運行時,這個定義的變量只是該腳本程序內 的一個局部變量,其他的shell不能引用它,要使某個變量的值可以在其他shell中被改變,可以使用export命令對已定義的變量進行輸出。 export命令將使系統在創建每一個新的shell時定義這個變量的一個拷貝。這個過程稱之為變量輸出。

 

3.export環境變量在shell的生存周期

  執行一個腳本 時,會先開啟一個子shell環境,然后將父shell中的所有系統環境變量復制過來,這個腳本中的語句就在子 shell中執行。(也就是說父shell的環境變量在子shell中可以調用,但反過來就不行,如果在子shell中定義了環境變量,只對該shell 或者它的子shell有效,當該子shell結束時,也可以理解為腳本執行完時,變量消失。)為了證明這一點,請看腳本內容:

  test='value'

  export test

  這樣的腳本執行完后,test實際上是不存在的。接着看下面的:

  test='value'

  export test

  bash

  這里在腳本最后一行再開一個子shell,該shell應該是腳本文件所在shell的子shell,這個腳本執行完后,是可以看到test這個變量的,因為現在是處於它的子shell中,當用exit退出子shell后,test變量消失。

結論

1、執行腳本時是在一個子shell環境運行的,腳本執行完后該子shell自動退出;

2、一個shell中的系統環境變量才會被復制到子 shell中(用export定義的變量);

3、一個shell中的系統環境變量只對該shell或者它的子shell有效,該shell結束時變量消失 (並不能返回到父shell中)。

4、不用export定義的變量只對該shell有效,對子shell也是無效的

 

4.設置環境變量PATH(export PATH)

   “/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路徑已經在系統環境變量中了,如果可執行文件在這幾個標准位置,在終端命令行輸入該軟件可執行文件的文件名和參數(如果需要參數),回車即可。  

  如果不在標准位置,文件名前面需要加上完整的路徑。不過每次都這樣跑就太麻煩了,一個“一勞永逸”的辦法是把這個路徑加入環境變量。命令 “PATH=$PATH:路徑”可以把這個路徑加入環境變量,但是退出這個命令行就失效了。要想永久生效,需要把這行添加到環境變量文件里。有兩個文件可 選:“/etc/profile”和用戶主目錄下的“.bash_profile”,“/etc/profile”對系統里所有用戶都有效,用戶主目錄下的“.bash_profile”只對這個用戶有效。

*************************************************************************************************

1、直接用export命令:
  #export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已經設好,可用命令export查看:
    [root@localhost bin]# export
    declare -x BASH_ENV="/root/.bashrc"
    ................
    declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
可以看到,環境變量已經設好,PATH里面已經有了我要加的編譯器的路徑。

2、修改profile文件: 
  #vi /etc/profile 
在里面加入:
  export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

3. 修改.bashrc文件:
  # vi /root/.bashrc
在里面加入:
  export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

后兩種方法一般需要重新注銷系統才能生效,最后可以通過echo命令測試一下:
  # echo $PATH
看看輸出里面是不是已經有了/my_new_path這個路徑了。

*************************************************************************************************

  PATH=“$PATH”:路徑1:路徑2:路徑3:.....:路徑n

  意思是可執行文件的路徑包括原先設定的路徑,也包括從“路徑1”到“路徑n”的所有路徑(原設定路徑+路徑1+......+路徑n)。當用戶輸入一個字符並按回車后,shell會依此在這些路徑中找到對應的可執行文件並交給系統核心執行,那個“$PATH”表示原先設定的路徑依舊有效。注意不要遺漏。

  注意,與DOS/Window不同,UNIX類系統環境變量中路徑名用冒號分隔,不是分號。另外,軟件越裝越多,環境變量越添越多,為了避免造成混亂,建議所有語句都添加在文件結尾,按軟件的安裝順序添加。  

格式如下:  

   # 軟件名-版本號  

  PATH=“$PATH”:路徑1:路徑2:...:路徑n

  其他環境變量=$其他環境變量:...

  在“profile”和“.bash_profile”中,“#”是注釋符號,寫在這里除了視覺分隔外沒有任何效果。

  設置完畢,注銷並重新登錄,設置就生效了。如果不注銷,直接在shell里執行這些語句,也能生效,但是作用范圍只限於執行了這些語句的shell。

  相關的環境變量生效后,就不必老跑到軟件的可執行文件目錄里去操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM