मैं चर के लिए पथ को तैयार करने या जोड़ने के लिए सुविधा कार्यों के एक सेट का उपयोग करता हूं। फ़ंक्शंस "पाथफंक" नामक एक कॉन्ट्रीब फाइल में बैश के लिए वितरण टारबॉल में आते हैं।
- add_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 स्टार्टअप फ़ाइल में उन्हें जोड़ते हैं, तो आप अपने 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
मैं इस विधि का उपयोग अपनी आरसी फाइलों में पहले_पथ को और दूसरे को जोड़कर_पथ को करता हूं। यह मेरे सभी पथ परिवर्तनों को एक नज़र में समझने में आसान बनाता है। एक और लाभ यह है कि लाइनें इतनी छोटी हैं कि यदि आवश्यक हो तो मैं एक पंक्ति में अनुगामी टिप्पणी जोड़ सकता हूं।
और चूंकि ये फ़ंक्शन हैं, आप उन्हें कमांड लाइन से अंतःक्रियात्मक रूप से उपयोग कर सकते हैं, जैसे add_path $(pwd)
कि वर्तमान निर्देशिका को पथ में जोड़ने के लिए कहकर ।
PATH=foo:$PATH
गलत लगता है क्योंकि यह हर बार विकास को बनाए रखता हैsource ~/.bashrc
और यहां तक किexec bash
इसके बाद से मदद नहीं कर सकता$PATH
हैexport
।