linux下export命令新增、刪除環境變數(轉載)

weixin_33769207發表於2017-11-26

轉自:http://blog.csdn.net/shenshendeai/article/details/49794699

export命令

功能說明:設定或顯示環境變數。

語  法:export [-fnp][變數名稱]=[變數設定值]

補充說明:在shell中執行程式時,shell會提供一組環境變數。 export可新增,修改或刪除環境變數,供後續執行的程式使用。

export的效力僅及於該此登陸操作。

參  數:

    -f  代表[變數名稱]中為函式名稱。

  -n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。

  -p  列出所有的shell賦予程式的環境變數。

      一個變數建立時,它不會自動地為在它之後建立的shell程式所知。而命令export可以向後面的shell傳遞變數的值。當一個shell指令碼呼叫並執行時,它不會自動得到原來指令碼(呼叫者)裡定義的變數的訪問權,除非這些變數已經被顯式地設定為可用。

      export命令可以用於傳遞一個或多個變數的值到任何後繼指令碼。

 

在 linux 裡設定環境變數的三種實現方法(export PATH):

1.直接使用 export 命令 (我們以 mysql 服務舉例說明)

[root@liyao ~]# export PATH=$PATH:/usr/local/mysql/bin

檢視是否已經設定好,可以使用命令 export 命令來檢視,也可以直接$#變數名#來檢視

zhongweichaomatoMacBook-Pro:~ zhongweichao$ $PATH

-bash: :/Users/zhongweichao/.local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/zhongweichao/Develop/jboss-5.1.0.GA/bin

需要注意: 直接使用 export 設定的變數都是臨時變數,也就是說退出當前的 shell ,為該變數定義的值便不會生效了。如何能讓我們定義的變數永久生效呢?那就看我們的第二種定義的方式。

2. 修改 /etc/profile

[root@liyao ~]# vi /etc/profile

export PATH=$PATH:/usr/local/mysql/bin  # 在配置檔案中加入此行配置

需要注意的是:修改完這個檔案必須要使用 以下命令在不用重啟系統的情況下使修改的內容生效。

[root@liyao ~]# source /etc/profile

或者是用 ‘.’:

[root@liyao ~]# . /etc/profile

檢視:

[root@liyao ~]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

# 配置已經生效

3. 修改 .bashrc 檔案是在當前使用者 shell 下生效

# vi /root/.bashrc?在裡面加入:

export PATH=$PATH:/usr/local/mysql/bin

修改這個檔案之後同樣也需要使用 source 或者是 . 使配置檔案生效。

再來使用 echo $PATH看下變數是否生效

[root@liyao ~]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

 

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時定義這個變數的一個拷貝。這個過程稱之為變數輸出。

http://blog.csdn.net/bailyzheng/article/details/7488769

轉載於:https://www.cnblogs.com/zhangwuji/p/7899075.html

相關文章