一、環(huán)境變量與文件查找
環(huán)境變量
1遗锣、變量
用declare創(chuàng)建變量货裹;讀取用echo和$(不要忘記此符號);
注意:變量名只能是英文字母精偿、數(shù)字弧圆、下劃線。且不能以數(shù)字開頭笔咽。
2搔预、環(huán)境變量
與上述三種環(huán)境變量相關(guān)的命令:set,env叶组,export拯田。這三個命令很相似,都是用于打印環(huán)境變量信息甩十,區(qū)別在于涉及的變量范圍不同船庇。
命 令 說 明
set 顯示當(dāng)前 Shell 所有變量,包括其內(nèi)建環(huán)境變量(與 Shell 外觀等相關(guān))侣监,用戶自定義變量及導(dǎo)出的環(huán)境變量鸭轮。
env 顯示與當(dāng)前用戶相關(guān)的環(huán)境變量,還可以讓命令在指定環(huán)境中運行橄霉。
export 顯示從 Shell 中導(dǎo)出成環(huán)境變量的變量窃爷,也能通過它將自定義變量導(dǎo)出為環(huán)境變量。
更直觀的使用 vimdiff 工具比較一下它們之間的差別:
永久生效
3姓蜂、命令的查找路徑與順序
Windows 中的也是有這么一個 PATH 環(huán)境變量按厘。這個 PATH 里面就保存了 Shell 中執(zhí)行的命令的搜索路徑。
4覆糟、添加自定義路徑“PATH”到環(huán)境變量吸耿。
注意這里一定要使用絕對路徑。
在每個用戶的 home 目錄中有一個 Shell 每次啟動時會默認(rèn)執(zhí)行一個配置腳本肆资,以初始化環(huán)境磅崭,包括添加一些用戶自定義環(huán)境變量等等。zsh 的配置文件是 .zshrc麦箍,相應(yīng) Bash 的配置文件為 .bashrc 漓藕。它們在 etc 下還都有一個或多個全局的配置文件,不過我們一般只修改用戶目錄下的配置文件挟裂。
我們可以簡單地使用下面命令直接添加內(nèi)容到 .zshrc 中:
$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
上述命令中 >> 表示將標(biāo)準(zhǔn)輸出以追加的方式重定向到一個文件中享钞,注意前面用到的 > 是以覆蓋的方式重定向到一個文件中,使用的時候一定要注意分辨诀蓉。在指定文件不存在的情況下都會創(chuàng)建新的文件栗竖。
5暑脆、修改和刪除已有變量
變量設(shè)置方式 說明
${變量名#匹配字串} 從頭向后開始匹配,刪除符合匹配字串的最短數(shù)據(jù)
${變量名##匹配字串} 從頭向后開始匹配狐肢,刪除符合匹配字串的最長數(shù)據(jù)
${變量名%匹配字串} 從尾向前開始匹配添吗,刪除符合匹配字串的最短數(shù)據(jù)
${變量名%%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最長數(shù)據(jù)
${變量名/舊的字串/新的字串} 將符合舊字串的第一個字串替換為新的字串
${變量名//舊的字串/新的字串} 將符合舊字串的全部字串替換為新的字串
可以使用 unset 命令刪除一個環(huán)境變量
6份名、 如何讓環(huán)境變量立即生效
前面我們在 Shell 中修改了一個配置腳本文件之后(比如 zsh 的配置文件 home 目錄下的 .zshrc)碟联,每次都要退出終端重新打開甚至重啟主機之后其才能生效,很是麻煩僵腺,我們可以使用 source 命令來讓其立即生效鲤孵,如:
$ source .zshrc
source 命令還有一個別名就是 .,注意與表示當(dāng)前路徑的那個點區(qū)分開辰如,雖然形式一樣普监,但作用和使用方式一樣,上面的命令如果替換成 . 的方式就該是:
$ . ./.zshrc
注意第一個點后面有一個空格丧没,而且后面的文件必須指定完整的絕對或相對路徑名鹰椒,source 則不需要。
二呕童、搜索文件
搜索相關(guān)的命令常用的有 whereis漆际,which,find 和 locate 夺饲。
whereis 簡單快速
$whereis who
你會看到它找到了三個路徑奸汇,兩個可執(zhí)行文件路徑和一個 man 在線幫助文件所在路徑,這個搜索很快往声,因為它并沒有從硬盤中依次查找擂找,而是直接從數(shù)據(jù)庫中查詢。whereis 只能搜索二進(jìn)制文件(-b)浩销,man 幫助文件(-m)和源代碼文件(-s)贯涎。如果想要獲得更全面的搜索結(jié)果可以使用 locate 命令。
locate 快而全
通過“ /var/lib/mlocate/mlocate.db ”數(shù)據(jù)庫查找慢洋,不過這個數(shù)據(jù)庫也不是實時更新的塘雳,系統(tǒng)會使用定時任務(wù)每天自動執(zhí)行 updatedb 命令更新一次,所以有時候你剛添加的文件普筹,它可能會找不到败明,需要手動執(zhí)行一次 updatedb 命令(在我們的環(huán)境中必須先執(zhí)行一次該命令)。它可以用來查找指定目錄下的不同文件類型太防,如查找 /etc 下所有以 sh 開頭的文件:
$ locate /etc/sh
which 小而精
which 本身是 Shell 內(nèi)建的一個命令妻顶,我們通常使用 which 來確定是否安裝了某個指定的軟件,因為它只從 PATH 環(huán)境變量指定的路徑中去搜索命令:
$ which man
find 精而細(xì)
find 應(yīng)該是這幾個命令中最強大的了,它不但可以通過文件類型讳嘱、文件名進(jìn)行查找而且可以根據(jù)文件的屬性(如文件的時間戳幔嗦,文件的權(quán)限等)進(jìn)行搜索。
與時間相關(guān)的命令參數(shù):
參數(shù) 說明
-atime 最后訪問時間
-ctime 最后修改文件內(nèi)容的時間
-mtime 最后修改文件屬性的時間
三沥潭、數(shù)字雨
四崭添、作業(yè)