ฉันใช้ชุดฟังก์ชั่นอำนวยความสะดวกสำหรับการเพิ่มหรือต่อท้ายพา ธ ไปยังตัวแปร ฟังก์ชั่นมาใน tarball แจกจ่ายสำหรับ Bash ในไฟล์ contrib ชื่อ "pathfuncs"
- add_path จะเพิ่มรายการที่ส่วนท้ายของตัวแปร PATH
- pre_path จะเพิ่มรายการไปยังจุดเริ่มต้นของตัวแปร PATH
- del_path จะลบรายการออกจากตัวแปร PATH ไม่ว่าจะอยู่ที่ใด
หากคุณระบุตัวแปรเป็นอาร์กิวเมนต์ที่สองมันจะใช้มันแทน PATH
เพื่อความสะดวกนี่คือ:
# is $1 missing from $2 (or PATH) ?
no_path() {
eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}
หากคุณเพิ่มสิ่งเหล่านี้ลงในไฟล์ bash startup ของคุณคุณสามารถเพิ่มใน PATH ดังนี้:
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
หรือระบุตัวแปรอื่น:
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
ฉันใช้วิธีนี้ในไฟล์ rc ของฉันวาง pre_paths ก่อนและ add_paths ที่สอง ทำให้การเปลี่ยนแปลงเส้นทางของฉันง่ายต่อการเข้าใจได้อย่างรวดเร็ว ประโยชน์อีกอย่างก็คือบรรทัดสั้นพอที่ฉันสามารถเพิ่มความคิดเห็นต่อท้ายบรรทัดถ้าจำเป็น
และเนื่องจากสิ่งเหล่านี้เป็นฟังก์ชั่นคุณสามารถใช้พวกมันแบบโต้ตอบจากบรรทัดคำสั่งเช่นโดยการพูดadd_path $(pwd)
เพื่อเพิ่มไดเรกทอรีปัจจุบันไปยังเส้นทาง
PATH=foo:$PATH
ดูเหมือนว่าผิดเพราะมันให้การเจริญเติบโตทุกครั้งsource ~/.bashrc
และยังexec bash
ไม่สามารถช่วยตั้งแต่เป็น$PATH
export