ZSH Yapılandırma
Farklı zsh yapılandırma çerçeveler (oh-my-zsh, zprezto, vs) test etmek isterseniz ve aralarında geçiş, en iyi bahis için sembolik bağlantıları kullanıyor ~/.zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
, ve ~/.zshenv
. Daha hızlı geçiş için bu sembolik bağlantıları oluşturmak üzere her çerçeve için bir kabuk komut dosyası oluşturmak isteyebilirsiniz.
Çerçeve yapılandırmalarınızı kendi klasörlerine yerleştirin. Her çerçeve için.
- Mümkünse çerçeveyi kendi klasörüne yükleyin, aksi takdirde
- Çerçeve kurulumu zorlarsa
~/.zsh
,
~/.zsh
Önce akımı koruyun . ya
~/.zsh
sembolik bağlantısı kaldırın ; rm ~/.zsh
veya
~/.zsh
klasörü taşıyın ;mv ~/.zsh ~/.zsh.backup
- Çerçeve yükleyiciyi çalıştırın.
- Çerçeve klasörünü kendi dizinine taşıyın. örn
mv ~/.zsh ~/.oh-my-zsh
.
- Her çerçeve için tekrarlayın.
Tamamlandığında, gerekli sembolik bağlantıları oluşturmak için her bir çerçeve için bir kabuk komut dosyası oluşturun. İşte zaten kullandığım için zprezto için bir örnek.
$ 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
Bu komut dosyası oldukça basittir ve tüm sembollerimin aynı desenle organize edilmesine dayanır. Kalıbı takip etmeyen semboller için döngüden sonra kaldır ve oluştur satırlarını kopyalayıp yapıştırabilirsiniz .
Bittiğinde, zsh çerçeveleri arasında geçiş yapmak için ~/bin/use-zprezto
--veya - kullanın ~/bin/use-whatever
.
Değişikliklerin yalnızca yeni zsh mermilerinde geçerli olduğunu unutmayın, mevcut mermilerin değil.
Kabuk Değiştirme
Biraz tehlikeli, ancak çok eğimliyseniz, kabuk komutunuz için bir symlink kullanabilir ve symlink'i varsayılan kabuğunuz olarak ayarlayabilirsiniz. Ardından use-*
, varsayılan kabuğunuzu değiştirmek için yukarıdaki komut dosyası yöntemini takip edebilirsiniz .
Zsh ile örnek olarak ...
$ 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
Bunun tehlikeli olmasının nedeni, depolanan kabuk /etc/passwd
geçerli bir program değilse kullanıcı altında oturum açamamanızdır . Eğer dikkatli değilseniz kendinizi hesabınızdan kilitleyebilirsiniz; yani ~/.shell
sembolik bağınız kırılmış veya etkileşimli bir programı göstermiyor. Bunu bir kullanıcı hesabıyla deneyebilirsiniz, ancak bu root
hesabınız için ÖNERİLMEZ.
Hala devam etmek istiyorsanız, o zaman
$ ~/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
? veyaoh-my-zsh
? hangi?