Mac OS X'teki Login Shell'i bash'dan zsh'ye nasıl değiştirebilirim?


90

Ben Mac OS X Girişi Shell değiştirmeye çalışıyorum bashiçin zsh. Gördüğüm Mac OS X Leopard mümkündür , ancak OS X Lion için bir yol bulamıyorum. Giriş kabuğunu bash'tan başka bir şeyle değiştirmenin gerçekten mümkün olduğunu umuyorum. Nereye bakacağımı tam olarak bilmiyorum.


Shell'i zsh olarak değiştirdikten sonra, yine de zsh'yi manuel olarak başlatmak zorunda kaldım. Çıkış yapmak yardımcı olmadı. Daha sonra en son giriş kabuğu için zsh değiştirdim. Çıkış yaptım ve oradaydı.

1
Başka bir şey yoksa, zsh'yi bulmak ve yürütmek için .bashrc dosyasını her zaman değiştirebilirsiniz. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. İpucu, kabuk başlatma komut dosyalarını değiştirirken, bir kabuğun çalıştığından ve başka bir pencerede yeni bir tane başlattığınızdan emin olun - eğer kırırsanız, düzeltmek için hala kolay bir yeriniz vardır.
Dan Pritts

Yanıtlar:


101

Kullanıcı kabuğunu aşağıdaki komutu kullanarak değiştirebilirsiniz:

chsh -s /bin/zsh

Not: Standart olmayan bir kabuk için onu değiştirmek için, /etc/shellsdosyaya yolunun eklendiğinden emin olun .


4
Ben zsh koymak Homebrew ile yeni bir zsh sürümü yükledim /usr/local/bin/zsh. Maalesef, chsh buna izin vermez diyerek chsh: /usr/local/bin/zsh: non-standard shell. Daniel Beck'in cevabı bu durumda uygun bir çözümdür.
adam_0

43
Eğer standart dışı kabukları ile ilgili sorunlar alıyorsanız, ben eklemek mümkün olması gerektiğini düşünüyorum /usr/local/bin/zshetmek /etc/shellsve bu sorunu çözmek gerekir.
Mike Meyers

13
Homebrew zsh kurulum bilgisi aslında / etc / shells içine eklemenizi önerir: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George

Bazen işe yaramaz. @
frank'ın

1
@Awesome_girl Varsayılan olarak, /etc/shellsaittir ve sadece root tarafından yazılabilir (süper kullanıcı). Sen Örneğin, kullanabilirsiniz sudo vi /etc/shellskullanmak sudo( s uper U ser do çalıştırmak için) vidüzenlemek için editör /etc/shells. Sistemimi yeni test ettim ve Sistem Bütünlüğü Koruması tarafından korunmadığını onayladım, bu yüzden SIP'yi devre dışı bırakmak için kasnaklardan atlamaksızın kök olarak düzenleyebilmelisiniz.
Spiff

54

Yeterince komik, sorunuza bağladığınız aynı yöntem hala OS X Lion'da Sierra (10.12) üzerinden çalışıyor. Tek fark: Tercih bölmesi, Hesaplar yerine Kullanıcılar ve Gruplar olarak adlandırılır .

  1. "Sistem Tercihleri" → "Kullanıcılar ve Gruplar" ı açın.
  2. Kilit simgesinin kilidi açık değilse, kilit simgesine tıklayın ve kimliğinizi doğrulayın.
  3. Kullanıcı adları listesindeki bir kullanıcının içeriğine basıp tıklatın (tıklatırken tuşunu basılı tutun Controlveya sağ elini kullanan iki düğmeli bir fareye sağ tıklayın).
  4. Bağlam menüsünde "Gelişmiş Seçenekler ..." seçeneğini seçin.
  5. Görüntülenen sayfada "Giriş kabuğu" seçeneğini seçin.

"Gelişmiş Seçenekler" ekranının üstündeki not, değişikliğin geçerli olması için yeniden başlatmanız gerektiğini iddia eder, ancak gerçekten oturumu kapatıp tekrar açmanız gerekir.

görüntü tanımını buraya girin


1
Bunun Mountain Lion'da çalıştığının yanı sıra, kendi yükleyebileceğiniz (ya da Homebrew kurulumunu yapabileceğiniz) "standart olmayan mermilerle" çalıştığından emin olun.
adam_0

2
10.10 Yosemite'de hala çalıştığını doğruladı.
ecnepsnai

4
"gelişmiş seçenekler" içeren menüyü açmak için kullanıcı adına sağ tıklayın. Bulmam birkaç dakika sürdü.
pdwalker

1
Neden birisini cevap alamadan önce tüm bilgileri toplamaya davet etmiyorsunuz? Bu nedenle, bir başkası, cevabın burada ve oradan ziyade, burada olduğu varsayımını yapması durumunda yorumda bulunur.
pdwalker

1
@jvriesem Aslında, öyle. Benim tahminim 2. adımı atlanır olduğunu
Daniel Beck

11

Veya:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
Bunun neden soruyu cevapladığını açıklayabilir misiniz?
ChrisF

Bunu sonra çalıştırdığınızdan emin olun brew install zsh.
mmell

3
Ayrıca, homebrew aracılığıyla yüklenen zsh yolunun farklı olmasına dikkat edin. Olarak yapmak:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit

1
UYARI: Bu, önce zsh yolunu kontrol etmeden kopyalayıp yapıştırırsanız, kabuğunuzun kırılmasına neden olur. Bunun yerine metakermit ne diyorsa onu yap.
radixhound

1

Aynı sorunu merak eden biri MacOS Sierra'da gerçekleşir ve aşağıdaki komut kabuğu değiştirmeden değiştirmeme izin verdi:

chpass -s /usr/local/bin/zsh

1
Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın. "chfn ve chsh, chpass kelimesinin eş anlamlılarıdır."
DavidPostill
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.