環境變量
變量的作用域即變量的有效範圍(比如一個函數中、一個源文件中或者全局範圍),在該範圍內只能有一個同名變量。一旦離開則該變量無效,如同不存在這個變量一般。
聲明變量
declare tmp
=
兩邊不可以輸入空格,否則會報錯
# 正確的賦值
$ tmp=shiyanlou
# 錯誤的賦值
$ tmp = shiyanlou
讀取變量的值
使用 echo
命令和 $
符號($ 符號用於表示引用一個變量的值,初學者經常忘記輸入)
$ echo $tmp
並不是任何形式的變量名都是可用的,變量名只能是英文字母、數字或者下劃線,且不能以數字作爲開頭。
三種變量
- 當前 Shell 進程私有用戶自定義變量,如上面我們創建的 tmp 變量,只在當前 Shell 中有效。
- Shell 本身內建的變量。
- 從自定義變量導出的環境變量
命 令 | 說 明 |
---|---|
set |
顯示當前 Shell 所有變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。 |
env |
顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行。 |
export |
顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出爲環境變量。 |
添加環境變量
PATH=$PATH:/home/shiyanlou/mybin
變量修改
變量設置方式 | 說明 |
---|---|
${變量名#匹配字串} |
從頭向後開始匹配,刪除符合匹配字串的最短數據 |
${變量名##匹配字串} |
從頭向後開始匹配,刪除符合匹配字串的最長數據 |
${變量名%匹配字串} |
從尾向前開始匹配,刪除符合匹配字串的最短數據 |
${變量名%%匹配字串} |
從尾向前開始匹配,刪除符合匹配字串的最長數據 |
${變量名/舊的字串/新的字串} |
將符合舊字串的第一個字串替換爲新的字串 |
${變量名//舊的字串/新的字串} |
將符合舊字串的全部字串替換爲新的字串 |
$ mypath=$PATH
$ echo $mypath
$ mypath=${mypath%/home/shiyanlou/mybin}
# 或使用通配符,*表示任意多個任意字符
$ mypath=${mypath%*/mybin}
變量刪除
unset mypath
變量立即生效
source
命令來讓其立即生效
$ cd /home/shiyanlou
$ source .zshrc
source別名 .
. ./.zshrc
使用.
的時候,需要注意與表示當前路徑的那個點區分開。
注意第一個點後面有一個空格,而且後面的文件必須指定完整的絕對或相對路徑名,source 則不需要。