Przełączanie konfiguracji ZSH
Jeśli chcesz przetestować różne ramy konfiguracji zsh (oh-my-zsh, zprezto, etc) i przełączać się między nimi, najlepiej jest za pomocą łączy symbolicznych dla ~/.zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
, i ~/.zshenv
. Możesz utworzyć skrypty powłoki dla każdej struktury, aby utworzyć te dowiązania symboliczne w celu szybszego przełączania.
Umieść konfiguracje frameworka we własnych folderach. Dla każdego frameworka.
- Jeśli to możliwe, zainstaluj środowisko w swoim folderze, w przeciwnym razie
- Jeśli środowisko wymusza instalację
~/.zsh
, to
~/.zsh
Najpierw chroń prąd . Zarówno
- usuń
~/.zsh
dowiązanie symboliczne; rm ~/.zsh
lub
- przenieś
~/.zsh
folder;mv ~/.zsh ~/.zsh.backup
- Uruchom instalator frameworka.
- Przenieś folder frameworka do własnego katalogu. np
mv ~/.zsh ~/.oh-my-zsh
.
- Powtórz dla każdej struktury.
Po zakończeniu utwórz skrypt powłoki dla każdego frameworka, aby utworzyć niezbędne dowiązania symboliczne. Oto przykład dla zprezto, ponieważ już go używam.
$ 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
Ten skrypt jest dość prosty i polega na tym, że wszystkie moje dowiązania symboliczne są zorganizowane według tego samego wzorca. Możesz skopiować i wkleić usuń i utworzyć linie po pętli dla dowiązań symbolicznych, które nie są zgodne ze wzorem.
Po zakończeniu użyj ~/bin/use-zprezto
opcji ~/bin/use-whatever
- lub -, aby przełączać się między ramami zsh.
Zauważ, że zmiany obowiązują tylko w nowych powłokach Zsh, a nie w istniejących powłokach.
Przełączanie powłok
Jest to trochę niebezpieczne, ale jeśli masz na to ochotę, możesz użyć dowiązania symbolicznego do polecenia powłoki i ustawić dowiązanie symboliczne jako domyślną powłokę. Następnie możesz postępować zgodnie zuse-*
zastosować powyższą metodę skryptu, aby zmienić domyślną powłokę.
Jako przykład z 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
Jest to niebezpieczne, ponieważ nie można zalogować się pod użytkownikiem, jeśli przechowywana w nim powłoka /etc/passwd
nie jest poprawnym programem. Możesz więc zablokować swoje konto, jeśli nie będziesz ostrożny; tzn. twoje ~/.shell
dowiązanie symboliczne jest zepsute lub nie wskazuje na program interaktywny. Możesz spróbować tego z kontem użytkownika, ale NIE jest to ZALECANE dla twojego root
konta.
Jeśli nadal chcesz kontynuować, to
$ ~/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
? czyoh-my-zsh
? który?