一個變數的內容可能經常被替換的,比如說我安裝了某軟體,但是軟體的可執行檔沒有被更新到環境變數中去,因此不得不每次進入安裝檔案的bin目錄下去執行相應的可執行程式來啟動程式,這是很麻煩的一件事情。你可以將這個bin目錄追加到PATH環境變數中,以此便能一勞永逸,無論在任何路徑下都能啟動該應用程式了。但是對於剛剛開始正式使用Ubuntu的菜鳥來說,一切沒有那麼順利的,你會犯錯,甚至把PATH環境變數搞錯,這真是要命的錯誤,如何處理好變數內容就成了個中關鍵。
一步到位的方法是這樣:進入你可執行程式的檔案夾,然後執行一下命令
PATH=$PATH:$(pwd) 或者是 PATH=$PATH:`pwd`/*注意,這裡的`不是單引號,而是鍵盤左上方,1旁邊的那個符號*/
好了,這樣肯定是萬無一失了。但是對於菜鳥來說,你很可能寫成這個樣子:
PATH=$PATH:${pwd} /*即,你小括弧變成了大括弧,而$()才是先行指令的模式,這個錯誤的指令會把*/
或者是寫成這個樣子
PATH=$PATH:'pwd'
這兩種處理方式的輸出分別是:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:pwd
此時,你就要使用變數內容的刪除與替換的規則進行修正了,規則如以下表格所示:
| 變數設定方式 |
說明 |
| ${ 變數#關鍵字} |
若變數內容從頭開始的資料符合“關鍵字”,則將符合的最短資料刪除 |
| ${變數##關鍵字} |
若變數內容從頭開始的資料符合“關鍵字”,則將符合的最長資料刪除 |
| ${變數%關鍵字} |
若變數內容從尾向前的資料符合“關鍵字”,則將符合的最短資料刪除 |
| ${變數%%關鍵字} |
若變數內容從尾向前的資料符合“關鍵字”,則將符合的最長資料刪除 |
| ${變數/舊字串/新字串} |
若變數內容符合“舊字串”,則將第一個字串用新字串代替 |
| ${變數//舊字串/新字串} |
若變數內容符合“舊字串”,則全部用新字串去代替舊字串 |
所以說如果要將以上錯誤的變數恢複原型,應該做的操作如下:
對於
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
施加操作:
PATH=${PATH%:}
對於
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:pwd
施加操作:
PATH=${PATH%:pwd}
好了,以上就是一個簡單的對變數處理的過程了,最後有個小點要注意,對於諸如這個操作:
echo PATH=${PATH#/*lightdm:}
雖然終端顯示的結果確實是將PATH變數中的第一個路徑給去掉了,但是,PATH變數的值並沒有改變,你再echo $PATH試試,其實PATH還是原值。如果想要使得相應的操作對變數生效,必須要進行一個賦值的過程。即讓
PATH=${PATH#lightdm:}