『忘了再學』Shell基礎 — 13、環境變量(一)
- 2022 年 5 月 18 日
- 筆記
- 高級測試技能 - Shell基礎
提示:
在Shell中,環境變量分為兩種。一種是用戶自定義的環境變量,另一種是系統自帶的環境變量。
而在系統自帶的環境變量中,PATH環境變量、PS1環境變量、LANG語系變量需要進行說明一下。
本篇文章主要說明用戶自定義的環境變量,和PATH環境變量。
1、用戶自定義的環境變量
(1)環境變量設置
使用export
關鍵字聲明的變量就是環境變量。
格式:
[root@localhost ~]# export AGE="18"
也可以先定義一個自定義變量,然後把自定義變量聲明稱環境變量。如下:
[root@localhost ~]# AGE=18
[root@localhost ~]# export AGE
註:
環境變量名稱一般要用大寫。
環境變量的作用域,在父子Shell中都可查看。
(2)查詢自定義環境變量
env
命令和set
命令的區別是,set命令可以查看所有變量,而env
命令只能查看環境變量。(具體看上一篇文章)
這裡說明一下env
命令和set
命令所查看的一些重要的內容,以後就不詳細說明了。
(1)env
命令
(2)set
命令
env
命令可以查詢到所有的環境變量,但是還有一些變量是env
命令查看不到的,這些變量雖然不是環境變量,卻是和Bash操作接口相關的變量,這些變量也對我們的Bash操作終端起到了重要的作用。這些變量就只能用set
命令來查看了,只列出重要的內容,如下:
(3)刪除自定義環境變量
和用戶定義變量一樣,用unset
命令刪除變量。
#刪除環境變量 gender
[root@localhost ~]# unset gender
2、系統自帶的環境變量——PATH環境變量
系統自帶的環境變量的名稱和作用都不能夠改變。
系統的環境變量,用上邊介紹的env
命令和set
命令都可以查出。我們接下來說明幾個比較重點的環境變量。
(1)PATH環境變量
查看當前系統PATH環境變量的值:
[root@localhost ~ ] # echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
每次執行env
命令和set
命令都要在好多變量中找我們需要查看的變量很麻煩,可以使用上面的方式直接查看我們所需的變量的值。
(2)PATH環境變量的作用
PATH變量的作用:系統查找命令的路徑。
你回想一下,在說明Shell執行腳本運行的時候說過,有兩種方法可以執行Shell腳本,一個是通過絕對路徑或者相對路徑執行腳本,如:/root/hello.sh
或者./hello.sh
。還有一種方法是直接執行bash命令執行腳本,如:bash hello.sh
。我們當時建議用第一種方式。(在Linux系統中,所有的執行文件,都應該使用絕對路徑來執行它)
但是我們有沒有發現,比如我們之前所執行過的一些系統命令,如ls
命令,我們知道ls
命令在系統的bin目錄下。如下圖:
但是我們直接執行ls
命令,並沒有使用絕對路徑,系統就能夠執行ls
命令,這是為什麼呢?
根本原因就是在這個PATH環境變量中。
PATH環境變量中配置的這些路徑,就是系統查找命令的路徑。也就是說當我們輸入了一個程序名,如果沒有寫命令的路徑,系統就會到PATH環境變量定義的路徑中去尋找,是否有可以執行的程序。從左到右一個一個目錄查找你所要執行的命令,找到了就直接執行,而如果把所有的目錄都搜索完了,也沒有找到你所執行的命令,就會報錯,提示你-bash:變量名:command not found(命令沒找到)
。換句話說也就是你這個命令執行的不正確,也或者說你所執行的命令,並沒有配置在PATH環境變量中。
注意:PATH環境變量的值中,是用「:」分割的路徑。
(3)配置命令的環境變量
我們如何才能讓一個自定義的程序或者腳本,不用輸入絕對路徑就能夠執行呢?
有兩種方式:
- 第一種方式:直接把程序或者腳本的可執行文件,直接複製到PATH環境變量下的任一個目錄下即可。
#拷貝hello.sh文件到bin目錄下 [root@localhost ~]# cp /root/sh/hello.sh /bin/ #hello.sh腳本即可以直接執行 [root@localhost ~]# hello.sh Perhaps only heart no holdings, to being on land, settle. 也許只有心無所持,才能隨遇而安。
- 第二種方式:把程序或者腳本所有在的路徑,添加到PATH環境變量中即可。
通過變量的疊加就可以實現:#在變量PATH的後面,加入/root/sh目錄 [root@localhost ~]# PATH="$PATH":/root/sh #查詢PATH的值,變量疊加生效了 [root@localhost ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/sh
注意的是,我們這樣定義的PATH環境變量只是臨時生效,一旦重啟或註銷就會消失,如果想要永久生效,需要寫入環境變量配置文件
/etc/profile
中。(可查看後續文章)