এ জাতীয় সেট করার জন্য আমার একটি বাশ ফাংশন রয়েছে $PATH
-
assign-path()
{
str=$1
# if the $PATH is empty, assign it directly.
if [ -z $PATH ]; then
PATH=$str;
# if the $PATH does not contain the substring, append it with ':'.
elif [[ $PATH != *$str* ]]; then
PATH=$PATH:$str;
fi
}
তবে সমস্যাটি হ'ল, আমাকে বিভিন্ন ভেরিয়েবলের জন্য আলাদা আলাদা ফাংশন লিখতে হবে (উদাহরণস্বরূপ, $CLASSPATH
পছন্দ মতো অন্য একটি ফাংশন assign-classpath()
)। আমি ব্যাশ ফাংশনে যুক্তি দেওয়ার কোনও উপায় খুঁজে পাইনি যাতে উল্লেখ করে আমি এটি অ্যাক্সেস করতে পারি।
আমার মতো কিছু থাকলে ভাল হত -
assign( bigstr, substr )
{
if [ -z bigstr ]; then
bigstr=substr;
elif [[ bigstr != *str* ]]; then
bigstr=bigstr:substr;
fi
}
কোন ধারণা, বাশ উপরের মত কিছু অর্জন কিভাবে?
assign-path /abc
যোগ করা হবে না /abc
পথে $ PATH- ইতিমধ্যে থাকে /abc/def
, /abcd
, /def/abc
ইত্যাদি বিশেষ করে যদি আপনি যোগ করতে পারবেন না /bin
পাথ ইতিমধ্যে থাকে /usr/bin
।
$PATH
এবং মত আপনার আর্গুমেন্ট বিরুদ্ধে অস্বীকার পরীক্ষা: add=/bin dir=/usr/bin ; [ -z "${dir%"$add"}" ] || dir="${dir}:${add}"
। আমার উত্তরে আমি এটি যতটা যুক্তি দিয়ে আপনি কেবল পছন্দ করতে চান তা এইভাবে করি IFS=:
।
$PATH
পারি? এবং ডিরেক্টরিটি $PATH
ইতিমধ্যে সেখানে না থাকলে এটি যুক্ত করুন ( সুপার ব্যবহারকারীতে )।