這三個命令都可以用來顯示shell變量
env:顯示所有的環境變量
set:顯示所有本地定義的shell變量
export:把一個變量變作環境變量。export不加參數的時候,顯示哪些變量被導出成了用戶變量,一個shell自己的變量可以通過export “導出”變成一個用戶變量(env和export顯示基本一樣,env多了一個_=/usr/bin/env)
關於哪些變量是環境變量,可以簡單地理解成在當前進程的子進程有效則為環境變量,否則不是。
按變量的生存周期來划分,Linux 變量可分為兩類:
-
永久的:需要修改配置文件,變量永久生效;
-
臨時的:使用 export 命令行聲明即可,變量在關閉 shell 時失效。
這里介紹兩個重要文件 /etc/bashrc
(有的 Linux 沒有這個文件) 和 /etc/profile
,它們分別存放的是 shell 變量和環境變量。還有要注意區別的是每個用戶目錄下的一個隱藏文件,
可以通過命令ls -a來查看隱藏的文件(隱藏文件名前面都有一個.,如.profile)。
1. 在/etc/profile文件中添加變量【對所有用戶生效(永久的)】
用VI在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,並且是“永久的”。
例如:編輯/etc/profile文件,添加CLASSPATH變量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。
2. 在用戶目錄下的.bash_profile文件中增加變量【對單一用戶生效(永久的)】
用VI在用戶目錄下的.bash_profile文件中增加變量,改變量僅會對當前用戶有效,並且是“永久的”。
例如:編輯guok用戶目錄(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下內容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效還要運行$ source /home/guok/.bash_profile不然只能在下次重進此用戶時生效。
3. 直接運行export命令定義變量【只對當前shell(BASH)有效(臨時的)】
在shell的命令行下直接使用[export變量名=變量值]定義變量,該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義。
三、另外
1.使用readonly命令設置只讀變量,如果使用了readonly命令的話,變量就不可以被修改或清除了。
2.使用unset命令來清除環境變量 $ unset TEMP_KEVIN #刪除環境變量TEMP_KEVIN