বাশের প্রম্পট নিয়ন্ত্রণ বৈশিষ্ট্যগুলি বরং স্থির। আপনি যদি আরও নিয়ন্ত্রণ চান তবে আপনি আপনার প্রম্পটে ভেরিয়েবলগুলি অন্তর্ভুক্ত করতে পারেন; আপনি promptvars
বিকল্পটি বন্ধ করেননি তা নিশ্চিত করুন ।
PS1='${PWD#"${PWD%/*/*}/"} \$ '
একক উদ্ধৃতি দ্রষ্টব্য: ভেরিয়েবলের বিস্তৃততা প্রম্পট প্রদর্শিত হওয়ার সময় ঘটতে হবে, PS1
ভেরিয়েবল সংজ্ঞায়িত সময়ে নয় ।
আপনি যদি প্রদর্শিত হয় তার উপরে আরও নিয়ন্ত্রণ চান, আপনি কমান্ড বিকল্প ব্যবহার করতে পারেন। উদাহরণস্বরূপ, উপরের স্নিপেট ~
হোম ডিরেক্টরিটির সংক্ষিপ্তসার হারিয়ে ফেলে ।
PS1='$(case $PWD in
$HOME) HPWD="~";;
$HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
$HOME/*) HPWD="~/${PWD##*/}";;
/*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
*) HPWD="$PWD";;
esac; printf %s "$HPWD") \$ '
এই কোডটি বরং জটিল, তাই এটি PS1
ভেরিয়েবলের সাথে স্টিক করার পরিবর্তে , আপনি কোডটি সেট করতে চালানোর জন্য PROMPT_COMMAND
ভেরিয়েবলটি ব্যবহার করতে পারেন HPWD
এবং তারপরে আপনার প্রম্পটে এটি ব্যবহার করতে পারেন।
PROMPT_COMMAND='case $PWD in
$HOME) HPWD="~";;
$HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
$HOME/*) HPWD="~/${PWD##*/}";;
/*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
*) HPWD="$PWD";;
esac'
PS1='$HPWD \$'
যেহেতু সংক্ষিপ্ত প্রম্পট কেবল একটি ডিরেক্টরি পরিবর্তনে পরিবর্তিত হয়েছে, তাই প্রতিবার প্রম্পট প্রদর্শিত হলে আপনাকে এটি পুনরায় গণনা করার দরকার নেই। বাশ কোনও হুক সরবরাহ করে না যা কোনও বর্তমান ডিরেক্টরি পরিবর্তনের সাথে চালিত হয়, তবে আপনি এটিকে ওভাররাইড cd
এবং এর কাজিনদের দ্বারা অনুকরণ করতে পারেন ।
cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
case $PWD in
$HOME) HPWD="~";;
$HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
$HOME/*) HPWD="~/${PWD##*/}";;
/*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
*) HPWD="$PWD";;
esac
}
PS1='$HPWD \$'
নোট করুন যে আপনার দরকার নেই এবং রফতানি করা উচিত নয় PS1
, কারণ এটি শেল সেটিংস, পরিবেশ পরিবর্তনশীল নয়। একটি বাশ PS1
সেটিং অন্য শেল দ্বারা বোঝা যাবে না।
পিএস আপনি যদি একটি সুন্দর ইন্টারেক্টিভ শেল অভিজ্ঞতা চান, তবে zsh এ স্যুইচ করুন , যেখানে এই সমস্ত (প্রম্পট %
বিস্তৃতকরণগুলি মূলত tcsh এর অন্তর্ভুক্ত chpwd
) ইত্যাদি স্থানীয় বৈশিষ্ট্য।
PS1='%2~ %# '
PS1='\w \$'; PROMPT_DIRTRIM=2
আপনাকে বাশ সমতুল্য দেওয়া উচিত, তবে এটি আমার সিস্টেমে সঠিকভাবে কাজ করে না।