Oh-my-zsh (ve zsh) yazılımını kaldırmadan nasıl “devre dışı bırakırsınız”?


16

Zsh ve oh-my-zsh gibi yeni geliştirme ortamlarını deniyordum. Şimdi oh-my-zsh'ı kurduğuma göre, varsayılan olarak terminallerimde (iTerm2 ve terminal) her zaman zsh ve oh-my-zsh'den ayarlarla başlar. Ben oh-my-zsh kaldırmak zorunda kalmadan "devre dışı bırakmak" veya oh-my-zsh ile kurulum zsh ve kurulumunu durdurmak mümkün mü merak ediyordum? Onları nasıl tekrar açacağınızı bilmek de güzel olurdu.

Şu anda, terminallerim otomatik olarak zsh'a giriyor (sanırım) ve oh-my-zsh'yi otomatik olarak kullanıyor. Bu konuda daha fazla kontrole sahip olmak istiyorum ve zsh kullanıldığında ve oh-my-zsh özellikleri kullanıldığında her ikisini de kontrol edebiliyorum.

Bilmekle ilgilendiğim bir şey de, terminal uygulamalarının başlangıçta hangi kabuğun çalışmaya başlayacağını nasıl bildikleri. Bu da kontrol edebilmek güzel olurdu!

Bana verdiğiniz her komutun "nedenini" olabildiğince açıklarsanız, bu yararlı olacaktır! :)


OS X'deyim. Bunun önemli olup olmadığından emin değilim, ancak daha genel Unix ortamları için daha geçerli olan cevapları daha çok beğeniyorum.


kullanmayı bırakmak ister misin zsh? veya oh-my-zsh? hangi?
2014'te Strugee

ya da her ikisi. Yani ben zsh ve oh-my-zsh kullanırken her ikisini de kontrol etmek istiyorum
Charlie Parker

Yanıtlar:


19

Sorunuzun ifadesi belirsiz, bu yüzden kullanmayı zshbırakmak istediğinizi mi yoksa kullanmayı bırakmak istediğinizi mi demek istediğinizi söyleyemem oh-my-zsh. Her ikisini de ele alacağım.

Devre Dışı Bırakma zsh

Çalıştırın chshve daha önce kullandığınız kabuğu seçin. Daha önce hangi kabuğu kullandığınızı bilmiyorsanız, neredeyse kesin bash. Bu komut, kullanıcıyla ilişkili "oturum açma kabuğunu" değiştirir. Temel olarak, varsayılan kabuğunuzu değiştirir.

Değişikliklerin geçerli olması için yeni bir terminal penceresi açmanız gerekecektir. Bu işe yaramazsa, ortamınızı yeniden başlatmak için oturumu kapatıp tekrar oturum açmanız gerekir.

Yalnızca devre dışı bırakılıyor oh-my-zsh

  1. Var olup ~/.zshrc.pre-oh-my-zsholmadığını kontrol edin . Muhtemelen öyle. (Bu dosya, oh-my-zshkurulum betiği öncekinin .zshrcdışına çıktığında oluşturulmuştur . For için benzer .zshrcbir başlangıç ​​dosyasıdır .)zsh.bashrcbash
  2. Varsa, yapın mv ~/.zshrc ~/.zshrc.oh-my-zsh. Bu, oh-my-zsh-created'i yoldan .zshrcçıkaracaktır, böylece orijinali geri yükleyebiliriz mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc.
  3. Yoksa, ~/.zshrcbir metin düzenleyicide açın. Yazan satırı bulun source $ZSH/.oh-my-zshve yorum yapın veya kaldırın. Bu işlemin başlatılmasını devre dışı bırakır oh-my-zsh.

Değişikliklerin etkili olması için kabuğunuzu yeniden başlatmanız gerekir.


İfadelerim için özür dilerim. Açıklığa kavuştuğuma inanıyorum. Şimdi anlaşıldı mı? Teşekkürler btw.
Charlie Parker

@CharlieParker evet, tembel oluyordum. Cevabı genişleteceğim, belki "neden" in birazını açıklayacağım.
2014'te Strugee

1
@CharlieParker farketmediyseniz bu cevabı güncelledim. bir şey geliştirilebiliyorsa bana bildirin.
Haziran'da Strugee

4

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
      • ~/.zshsembolik bağlantısı kaldırın ; rm ~/.zshveya
      • ~/.zshklasö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/passwdgeç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 ~/.shellsembolik bağınız kırılmış veya etkileşimli bir programı göstermiyor. Bunu bir kullanıcı hesabıyla deneyebilirsiniz, ancak bu roothesabı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

3

chsh -s / bin / bash

Manuel olarak yeni bir varsayılan kabuk ayarlamak için chsh -s / my / new / shell (ör. Chsh -s / bin / bash) yapın. Sonra mermilerinizi tekrar açın.


2

Zsh'yi ZDOTDIRbaşlatmadan önce ortam değişkenini ayarlayarak zsh'ye kullanıcı başına yapılandırma dosyalarını farklı bir dizinden yüklemesini söyleyebilirsiniz .

Yapılandırma dosyalarınızı yüklemeden zsh'yi başlatmak istiyorsanız, ZDOTDIRvar olmayan bir dizine ayarlayın. Sistem yapılandırma dosyalarını (dışında /etc/zshenv) atlamak istiyorsanız, çalıştırabilirsiniz zsh -f. Sistem yapılandırma dosyalarını atlamak, ancak kullanıcı başına dosyaları çalıştırmak istiyorsanız, çalıştırın zsh -d.

Örneğin, oh-my-zsh'ı varsayılan yapmadan test etmek istiyorsanız .zshrc, oh-my-zsh dizinini ana dizininize koymayın . Bunun yerine, başka bir yere koyun, örn. içinde ~/.oh-my-zshve sonra çalıştırın ZDOTDIR=~/.oh-my-zsh zshoh-my-zsh kullanmak istediğinizde.


Terminal uygulamaları SHELLortam değişkeni tarafından belirtilen kabuğu çalıştırır . Bu değişken ayarlanmamışsa, kullanıcı veritabanında ( /etc/passwd) belirtilen oturum açma kabuğunu çalıştırırlar . Bir terminal emülatörünü başlattığınızda farklı bir uygulama isteyebilirsiniz, örn xterm -e fish.


0

@Gilles içinde biraz gizli olduğu için herhangi bir yapılandırma olmadan zsh yüklemenin hızlı yolunu yanıtlayın, örneğin .zshrc .zshenv vb.

zsh -f

Bu, config'inizdeki herhangi bir şeyin zsh'nin bazı özelliklerinin çalışmasını engelleyip engellemediğini test etmek istediğinizde yararlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.