ZSH Config Switching
Якщо ви хочете протестувати різні рамки конфігурації ЗШ (о-мій-ЗШ, 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
Цей сценарій досить простий і спирається на той факт, що всі мої символьні посилання організовані за однаковою схемою. Ви можете скопіювати та вставити видалення та створити рядки після циклу для символьних посилань, які не відповідають шаблону.
Після цього, використання ~/bin/use-zprezto
-OR , ~/bin/use-whatever
--to перемикання між ЗШ рамок.
Зауважте, що зміни набувають чинності лише в нових оболонках 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
? котрий?