Linux 的 Shell 变量
【簡述】
?
變量即計算機中用于記錄一個值的符號,而這些符號可用于不同的運算處理中。
通常變量與值是一對一的關系,可以通過表達式讀取它的值并賦值給其它變量,也可以直接指定數值賦值給任意變量。
為便于運算和處理,大部分的編程語言會區分變量的類型,用于分別記錄數值、字符或者字符串等等數據類型。
shell 變量也基本如此,有不同類型,可以參與運算,有作用域限定。
?
【變量類型】
在運行 shell 時,有三種變量:
1)局部變量:當前 shell 進程私有用戶自定義變量,僅在當前 shell 實例中有效,其他 shell 啟動的程序不能訪問。
2)shell 變量:shell 變量是由 shell 程序本身內建的變量,其中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行。
3)環境變量:?由局部變量導出。所有的程序,都能訪問環境變量,有些程序依靠環境變量來保證其正常運行。
【變量定義與使用】
shell 變量不需要進行任何聲明,直接定義即可,但使用 shell 變量要用到$符號。
同時,變量名的命名須遵循如下規則:
1)變量名只能是英文字母、數字或者下劃線,且不能以數字為開頭。
2)不能使用 bash 里的關鍵字。
注:
1.變量名和等號之間不能有空格,否則會被認為是命令。
2.使用變量時,加 {} 可以防止歧義
【更改變量為只讀】
使用 readonly 命令可以將變量定義為只讀變量,只讀變量的值不能被改變。
【修改已有變量】
| ${變量名#匹配字串} | 從頭向后開始匹配,刪除符合匹配字串的最短數據 |
| ${變量名##匹配字串} | 從頭向后開始匹配,刪除符合匹配字串的最長數據 |
| ${變量名%匹配字串} | 從尾向前開始匹配,刪除符合匹配字串的最短數據 |
| ${變量名%%匹配字串} | 從尾向前開始匹配,刪除符合匹配字串的最長數據 |
| ${變量名/舊的字串/新的字串} | 將符合舊字串的第一個字串替換為新的字串 |
| ${變量名//舊的字串/新的字串} | 將符合舊字串的全部字串替換為新的字串 |
例:
【刪除已有變量】
使用 unset 命令可以刪除變量,變量被刪除后就無法再次使用。
注:只讀變量無法刪除,只有重啟后才會自動消失。
【環境變量】
在所有的 Linux 系統中,每個進程都有其各自的環境變量設置,且默認情況下,當一個進程被創建時,除非創建過程中明確指定,它將繼承其父進程的絕大部分環境設置。
環境變量的作用域比自定義變量的要大,Shell 的環境變量作用于其自身和它的子進程,Shell 程序也作為一個進程運行在操作系統之上,而在 Shell 中運行的大部分命令都將以 Shell 的子進程的方式運行。
?
可以將環境變量簡單地理解為在當前進程的子進程有效的變量,為與普通變量區分,通常習慣將環境變量名設為大寫。
1.打印環境變量信息
| set | 顯示當前 Shell 所有變量 |
| env | 顯示與當前用戶相關的環境變量,也可讓命令在指定環境中運行 |
| export | 顯示從 Shell 中導出成環境變量的變量,也可將自定義變量導出為環境變量 |
2.環境變量永久生效
按變量的生存周期來劃分,Linux 變量可分為兩類:
1)永久的:需要修改配置文件,變量永久生效;
2)臨時的:使用 export 命令行聲明即可,變量在關閉 shell 時失效。
當關機或關閉當前的 shell 之后,環境變量會消失。
在 /etc 下有兩個重要文件 /etc/bashrc 和 /etc/profile ,它們分別存放的是 shell 變量和環境變量。
如果想要添加一個對所有用戶永久生效的環境變量,只需要打開 /etc/profile,在里面加上想添加的環境變量即可。
注:在每個用戶目錄下存在一個隱藏文件 .profile ,其只對當前用戶永久生效。
3.命令的查找路徑與順序
在 Shell 中輸入一個命令,Shell 是通過環境變量 PATH 來進行搜索然后執行的,這個 PATH 里面就保存了 Shell 中執行的命令的搜索路徑。
?
通常 PATH 目錄下放的都是可執行文件,當在 Shell 中執行一個命令時,系統就會按照 PATH 中設定的路徑按照順序依次到目錄中去查找,如果存在同名的命令,則執行先找到的那個。
?
4.添加自定義路徑到“ PATH ”環境變量
命令格式:PATH=$PATH:絕對路徑
按如上命令給 PATH 環境變量追加了一個路徑,但也只是在當前 Shell 有效,一旦退出終端,再打開就會發現又失效了。
為避免上述問題,可采用讓其自動執行的方式配置腳本。
在每個用戶的 home 目錄中有一個 Shell 每次啟動時會默認執行一個配置腳本,用于初始化環境,包括添加一些用戶自定義環境變量等,如:zsh 的配置文件是 .zshrc,相應 Bash 的配置文件為 .bashrc ,它們在 etc 下還都有一或多個全局的配置文件,但一般只修改用戶目錄下的配置文件。
可采用下列命令直接添加內容到 .zshrc 中:echo "PATH=$PATH:絕對路徑" >> .zshrc
注:>> 表示將標準輸出以追加的方式重定向到一個文件中(> 是以覆蓋的方式重定向到一個文件中),在指定文件不存在的時會創建新的文件。
?
5.讓環境變量立即生效
?
在 Shell 中修改了一個配置腳本文件后,每次都要退出終端重新打開甚至重啟主機之后其才能生效,為避免麻煩,可以使用 source 命令來讓其立即生效。
命令格式:source 配置文件名
?
?
?
?
總結
以上是生活随笔為你收集整理的Linux 的 Shell 变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMweare 典型创建 Kali Li
- 下一篇: 靶形数独(洛谷-P1074)