আমি কোনও ভেরিয়েবলের পাথ প্রেন্ডিং বা সংযোজন করার জন্য সুবিধার ফাংশনগুলির একটি সেট ব্যবহার করি। ফাংশনগুলি "প্যাথফঙ্কস" নামে একটি অবদানকারী ফাইলে বাশের জন্য বিতরণ টারবলে আসে।
- add_path 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;:\$;;"`
}
যদি আপনি এগুলিকে আপনার ব্যাশ স্টার্টআপ ফাইলে যোগ করেন তবে আপনি আপনার 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
।