Linux添加路徑到PATH環境變數
一、PATH環境變數
? PATH變數是Linux系統存盤可執行檔案搜索路徑的地方,等價于Windows系統的Path變數,由于其他作業系統我沒用過,不清楚詳細情況,不作贅述,
? 類似于Windows系統的系統變數和用戶變數,Linux的環境變數也存在兩種型別:
- 系統啟動時加載的各個組態檔建立或修改的變數,例如/etc/profile以及在它末尾加載的/etc/profile.d檔案夾內的所有sh檔案,它們類似于Windows的系統變數,對所有用戶可見,
- 用戶登陸時加載的各個組態檔建立或修改的變數,例如用戶所使用的命令解釋器(shell)的組態檔,他們類似于WIndows的用戶變數僅對當前用戶可見,
? 由于Linux中的應用程式并非都是全域安裝,也有可能是為用戶單獨安裝的,所以PATH變數中的路徑是存在系統級和用戶級兩種情形的,
二、添加方式
1. 直接使用export陳述句
例如:
#!/usr/bin/sh
# /etc/profile.d/jdk.sh
export PATH=$PATH:/usr/local/jvm/bin
或:
#~/.bashrc
......
export PATH=$PATH:~/.local/bin
......
? 這種方法最大的缺陷是容易出現重復添加的現象,尤其是寫在用戶shell的組態檔內的陳述句,在用戶重新加載shell組態檔時會重復插入,當然重新加載組態檔導致的重復基本上可以通過寫在僅登錄期加載的shell組態檔(如zshell的.zlogin)中解決,
2. 借助函式
? 在ArchLinux的/etc/profile檔案中,我發現了一個神奇的函式,并將它寫在了我的.zshrc中:
appendpath()
{
case ":$PATH:" in
*:"$1":*)
;;
*)
PATH="${PATH:+$PATH:}$1"
esac
}
appendpath '~/.local/bin'
unset -f appendpath
export PATH
? 在向PATH變數添加路徑之前,會先使用case的匹配機制判斷待添加路徑是否已經存在與PATH變數中,以此確定是否添加,執行完成后,使用uset命令接觸函式名的占用,
? 這也是我目前使用的方法,可以完美的避免路徑重復的問題,雖然它的出處只是用來修改PATH,但像CLASSPATH這種串列型的環境變數也可以使用這種方法,
尾注:我在博客園開博客的主要目的是找一個一個方便的云筆記平臺,內容都是平時的一些隨記,個人并不追求文筆嚴謹,所以拜請不幸翻到這篇博客的網友們高抬貴手,不要吐槽我,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/6474.html
標籤:Linux
上一篇:檔案/目錄對比:diff命令
下一篇:linux 創建邏輯卷
