জেডএসএইচ কনফিগারেশন স্যুইচিং
আপনি বিভিন্ন zsh কনফিগারেশন অবকাঠামো (OH-মাই-zsh, zprezto, ইত্যাদি) পরীক্ষা করতে চান, এবং তাদের মধ্যে সুইচ, আপনার সেরা বাজি জন্য সিম্বলিক লিংক ব্যবহার করছে ~/.zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
, এবং ~/.zshenv
। দ্রুত স্যুইচিংয়ের জন্য সেই প্রতিলিঙ্কগুলি তৈরি করতে আপনি প্রতিটি কাঠামোর জন্য শেল স্ক্রিপ্ট তৈরি করতে চাইতে পারেন।
আপনার কাঠামোর কনফিগারেশনগুলিকে তাদের নিজস্ব ফোল্ডারে রাখুন। প্রতিটি কাঠামোর জন্য।
- অন্যথায়, সম্ভব হলে নিজস্ব ফোল্ডারে ফ্রেমওয়ার্কটি ইনস্টল করুন
- যদি ফ্রেমওয়ার্কটি ইনস্টলেশনটি বাধ্য করে
~/.zsh
, তবে
- বর্তমানটিকে
~/.zsh
প্রথমে রক্ষা করুন । উভয় ক্ষেত্রেই
~/.zsh
সিমিলিংক অপসারণ ; rm ~/.zsh
, বা
~/.zsh
ফোল্ডারটি সরান ;mv ~/.zsh ~/.zsh.backup
- ফ্রেমওয়ার্ক ইনস্টলার চালান।
- ফ্রেমওয়ার্ক ফোল্ডারটিকে তার নিজস্ব ডিরেক্টরিতে সরান। যেমন
mv ~/.zsh ~/.oh-my-zsh
।
- প্রতিটি কাঠামোর জন্য পুনরাবৃত্তি।
একবার হয়ে গেলে, প্রতিটি কাঠামোর জন্য প্রয়োজনীয় সিমলিংক তৈরির জন্য একটি শেল স্ক্রিপ্ট তৈরি করুন। এখানে Zprezto জন্য একটি উদাহরণ, যেহেতু আমি ইতিমধ্যে এটি ব্যবহার করেছি।
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zprezto
#!/bin/bash
SYMLINKS=".zsh .zshrc .zshlogin .zshlogout .zshprofile .zpreztorc .zshenv .zshrc"
CONFIG_HOME="$HOME/.zprezto"
# check for unexpected error conditions
for sym in $SYMLINKS; do
# report an error and quit if $sym exists and is not a symlink
[[ -e "$HOME/$sym" -a ! -h "$HOME/$sym" ]] && { echo "error: '$HOME/$sym' is not a symlink!"; return 1; }
done
# now create the symlinks now that nothing should go wrong
for sym in $SYMLINKS; do
# remove old symlink if it exists
[[ -h "$HOME/$sym" ]] && rm -f "$HOME/$sym"
# create new symlink
ln -s "$CONFIG_HOME/$sym" "$HOME/$sym"
done
# uncomment next line to start a new zsh shell. CAUTION: each call is a zsh shell inside a zsh shell. Too many calls will put you in limbo :D
#/usr/bin/env zsh
EOF
$ chmod 700 ~/bin/use-zprezto
এই স্ক্রিপ্টটি মোটামুটি সহজ এবং এই সত্যের উপর নির্ভর করে যে আমার সমস্ত সিমলিংকগুলি একই ধাঁচের সাথে সংগঠিত। আপনি কপি ও পেস্ট করতে পারেন Remove এবং তৈরি symlinks থাকা ব্যক্তিগণ প্যাটার্ন অনুসরণ না লুপ পর লাইন।
একবার হয়ে গেলে, ~/bin/use-zprezto
--sh ~/bin/use-whatever
- ব্যবহার করুন zsh ফ্রেমওয়ার্কগুলির মধ্যে স্যুইচ করুন।
নোট করুন যে পরিবর্তনগুলি কেবলমাত্র নতুন zsh শেলগুলিতে কার্যকর হয়, বিদ্যমান শেলগুলি নয়।
শেল স্যুইচিং
এটি কিছুটা বিপজ্জনক, তবে আপনি যদি এদিকেই ঝুঁকে থাকেন তবে আপনি নিজের শেল কমান্ডের জন্য একটি সিমলিংক ব্যবহার করতে পারেন এবং সিমলিংকে আপনার ডিফল্ট শেল হিসাবে সেট করতে পারেন। তারপরে আপনি use-*
নিজের ডিফল্ট শেলটি পরিবর্তন করতে উপরের স্ক্রিপ্ট পদ্ধতিটি অনুসরণ করতে পারেন ।
Zsh সহ একটি উদাহরণ হিসাবে ...
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zsh
#!/bin/bash
# check for valid shell symlink
if [[ ! -h "$HOME/.shell" ]]; then
echo "error: $HOME/.shell is not a symlink!"
return 1
fi
# remove existing shell symlink if it exists
[[ -h "$HOME/.shell" ]] && rm -f "$HOME/.shell"
# create new shell symlink, but warn user if this fails!
if ! ln -s /usr/bin/zsh "$HOME/.shell"; then
echo "ERROR: failed to create $HOME/.shell symlink. Manually create the symlink or future logins will fail!."
return 2
fi
EOF
$ chmod 700 ~/bin/use-zsh
এটি বিপজ্জনক কারণ হ'ল যদি সঞ্চিত শেলটি /etc/passwd
কোনও বৈধ প্রোগ্রাম না হয় তবে আপনি কোনও ব্যবহারকারীর অধীনে লগইন করতে পারবেন না । সুতরাং আপনি যদি সাবধান না হন তবে নিজেকে আপনার অ্যাকাউন্ট থেকে লক করতে পারেন; অর্থাত্ আপনার ~/.shell
সিমলিংকটি ভেঙে গেছে বা কোনও ইন্টারেক্টিভ প্রোগ্রামে নির্দেশ করে না। আপনাকে ব্যবহারকারীর অ্যাকাউন্ট দিয়ে এটি ব্যবহার করতে স্বাগত জানাই তবে এটি আপনার root
অ্যাকাউন্টের জন্য প্রস্তাবিত নয় ।
আপনি যদি এখনও চালিয়ে যেতে চান তবে
$ ~/bin/use-zsh # ensures ~/.shell exists for chsh
$ echo "$HOME/.shell | sudo tee -a /etc/shells # add symlink to system's list of valid shells
$ chsh -s ~/.shell # changes default shell in /etc/passwd for $USER
zsh
? বাoh-my-zsh
? কোনটি?