linux 环境变量详解,linux环境变量实例详解
1.環(huán)境變量
簡單理解了變量的概念,就很容易理解環(huán)境變量了。環(huán)境變量的作用域比自定義變量的要大,如?Shell?的環(huán)境變量作用于自身和它的子進程。在所有的?UNIX?和類?UNIX?系統(tǒng)中,每個進程都有其各自的環(huán)境變量設置,且默認情況下,當一個進程被創(chuàng)建時,除了創(chuàng)建過程中明確指定的話,它將繼承其父進程的絕大部分環(huán)境設置。Shell?程序也作為一個進程運行在操作系統(tǒng)之上,而我們在?Shell?中運行的大部分命令都將以?Shell?的子進程的方式運行。
通常我們會涉及到的變量類型有三種:
當前 Shell 進程私有用戶自定義變量,如上面我們創(chuàng)建的 tmp 變量,只在當前 Shell 中有效。
Shell 本身內建的變量。
從自定義變量導出的環(huán)境變量。
也有三個與上述三種環(huán)境變量相關的命令:set,env,export。這三個命令很相似,都是用于打印環(huán)境變量信息,區(qū)別在于涉及的變量范圍不同。詳見下表:
命令
說明
set
顯示當前?Shell?所有變量,包括其內建環(huán)境變量(與?Shell?外觀等相關),用戶自定義變量及導出的環(huán)境變量。
env
顯示與當前用戶相關的環(huán)境變量,還可以讓命令在指定環(huán)境中運行。
export
顯示從?Shell?中導出成環(huán)境變量的變量,也能通過它將自定義變量導出為環(huán)境變量。
2.永久生效
但是問題來了,當你關機后,或者關閉當前的?shell?之后,環(huán)境變量就沒了啊。怎么才能讓環(huán)境變量永久生效呢?
按變量的生存周期來劃分,Linux?變量可分為兩類:
1.????永久的:需要修改配置文件,變量永久生效;
2.????臨時的:使用?export?命令行聲明即可,變量在關閉?shell?時失效。
這里介紹兩個重要文件?/etc/bashrc(有的?Linux?沒有這個文件)和?/etc/profile?,它們分別存放的是?shell?變量和環(huán)境變量。還有要注意區(qū)別的是每個用戶目錄下的一個隱藏文件:
.profile 可以用 ls -a查看
cd /home/shiyanlou
ls -a
這個?.profile?只對當前用戶永久生效。而寫在?/etc/profile?里面的是對所有用戶永久生效,所以如果想要添加一個永久生效的環(huán)境變量,只需要打開?/etc/profile,在最后加上你想添加的環(huán)境變量就好啦。
3.?命令的查找路徑與順序
你可能很早之前就有疑問,我們在?Shell?中輸入一個命令,Shell?是怎么知道去哪找到這個命令然后執(zhí)行的呢?這是通過環(huán)境變量?PATH?來進行搜索的,熟悉?Windows?的用戶可能知道?Windows?中的也是有這么一個?PATH?環(huán)境變量。這個?PATH?里面就保存了?Shell?中執(zhí)行的命令的搜索路徑。
查看?PATH?環(huán)境變量的內容:
$ echo$PATH
默認情況下你會看到如下輸出:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
如果你還記得?Linux?目錄結構那一節(jié)的內容,你就應該知道上面這些目錄下放的是哪一類文件了。通常這一類目錄下放的都是可執(zhí)行文件,當我們在?Shell?中執(zhí)行一個命令時,系統(tǒng)就會按照?PATH?中設定的路徑按照順序依次到目錄中去查找,如果存在同名的命令,則執(zhí)行先找到的那個。
下面我們將練習創(chuàng)建一個最簡單的可執(zhí)行?Shell?腳本和一個使用?C?語言創(chuàng)建的“ helloworld ”程序,如果這兩部分內容你之前沒有學習過,那么你可以進行一個入門學習:
C?語言入門教程
高級?Bash?腳本編程指南
Linux ShellScripting Tutorial (LSST) v2.0?。
創(chuàng)建一個?Shell?腳本文件:
$ gedit hello_shell.sh
在腳本中添加如下內容,保存并退出(注意不要省掉第一行,這不是注釋,論壇有用戶反映有語法錯誤,就是因為沒有了第一行):
修改和刪除已有變量
變量修改
變量的修改有以下幾種方式:
變量設置方式
說明
${變量名#匹配字串}
從頭向后開始匹配,刪除符合匹配字串的最短數(shù)據(jù)
${變量名##匹配字串}
從頭向后開始匹配,刪除符合匹配字串的最長數(shù)據(jù)
${變量名%匹配字串}
從尾向前開始匹配,刪除符合匹配字串的最短數(shù)據(jù)
${變量名%%匹配字串}
從尾向前開始匹配,刪除符合匹配字串的最長數(shù)據(jù)
${變量名/舊的字串/新的字串}
將符合舊字串的第一個字串替換為新的字串
${變量名//舊的字串/新的字串}
將符合舊字串的全部字串替換為新的字串
比如要修改我們前面添加到?PATH?的環(huán)境變量。為了避免操作失誤導致命令找不到,我們先將?PATH?賦值給一個新的自定義變量?path:
$ path=$PATH
$ echo$path
$ path=${path%/home/shiyanlou/mybin}
# 或使用通配符,*表示任意多個任意字符
$ path=${path%*/mybin}
變量刪除
可以使用?unset?命令刪除一個環(huán)境變量:
$ unset temp
6.?如何讓環(huán)境變量立即生效
前面我們在?Shell?中修改了一個配置腳本文件之后(比如?zsh?的配置文件?home?目錄下的?.zshrc),每次都要退出終端重新打開甚至重啟主機之后其才能生效,很是麻煩,我們可以使用?source?命令來讓其立即生效,如:
$ source .zshrc
source?命令還有一個別名就是?.,注意與表示當前路徑的那個點區(qū)分開,雖然形式不一樣,但作用和使用方式一樣,上面的命令如果替換成?.?的方式就該是:
$ . ./.zshrc
注意第一個點后面有一個空格,而且后面的文件必須指定完整的絕對或相對路徑名,source?則不需要。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的linux 环境变量详解,linux环境变量实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用计算机计算电力系统故障,用计算机计算电
- 下一篇: mxnet基础到提高(38)-自动梯度计