MacOSX'te ZSH varsayılan Kabuk yapma [kapalı]


99

Mac'ime zsh yükledim. ve şimdi onu Bash yerine varsayılan kabuk yapmak istiyorum. Ama şu hatayla karşılaşıyorum gibi görünüyor:

$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell

1
Ne chsh -lçıktı? (Bu işe yaramazsa, içeriği /etc/shellsnedir?) Bunun başarısız olduğundan ve sadece uyarı olmadığından emin misiniz? /usr/bin/zshOraya eklemek bu işi yapar mı?
Etan Reisner

1
chsh: seçenek değişken gerektirir - l kullanım: chpass [-l konumu] [-u AuthName] [-s kabuk] [kullanıcı]
Harsha OG

/ bin / bash / bin / csh / bin / ksh / bin / sh / bin / tcsh / bin / zsh
Harsha MV

Neyin var /bin/zsh?
jxh

1
Şimdi varsayılan kabuğu zsh olarak değiştirmenin resmi bir yolu var. "Mac'inizde varsayılan kabuk olarak zsh kullanın" adlı Apple belgesine bakın support.apple.com/en-ca/HT208050
Anthonyeef

Yanıtlar:


86

3 kolay adım:

  1. which zshbu size zsh'a giden yolu verir
  2. Sonra chsh -s /bin/zshveya farklıysa zsh'nizin yolunu değiştirin
  3. Makinenizi yeniden başlatın

yay işe yaradı. Yosemite'e özel mi?
Harsha MV

2
Hayır sanmıyorum, sadece bilginiz içindi :)
Quentin Perez

8
Başka ilgili açıklama eklemek için diyor aynı eski soru üzerine /usr/bin/zshkadar /etc/shellssorunu çözer.
Brice

Mükemmel çalışıyor
Olkunmustafa

1
Bunu / etc / shells'e uygun şekilde ayarlayın! "$ Nano / etc / shells" ile zsh yolunu arayın. Mayın de / bin / / usr / bin / zsh içinde 10.12.2 yerine ZSH edildi
oikonomopo

190

Doğru cevap, sorununuzu çözmüş olmalıydı:

chsh: / usr / bin / zsh: standart olmayan kabuk

Bunun nedeni, aşağıdaki chshkılavuzları okuyarak görebileceğiniz gibi, yalnızca / etc / shells dosyasında tanımlanan kabukları kabul edecek olmasıdır chsh:

chsh, sistemdeki herhangi bir çalıştırılabilir dosyanın tam yol adını kabul eder. Ancak, kabuk / etc / shells dosyasında listelenmemişse bir uyarı verecektir.

Bu sorunu çözmek ve zsh'yi varsayılan kabuk yapmak için, şu şekilde yapmalısınız:

$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

Açıkçası, zshburada yolunuzun bu olduğunu varsayıyorum . Bu çözüm, örneğin en son sürümü zshile yüklemeyi seçerseniz de işe yarar brew install zsh.

DÜZENLE (yorum için ThisIsFlorianK için teşekkürler) :

Kabuk kurulumunuza bağlı olarak bir mesaj alabilirsiniz /etc/shells: Permission denied. Bu konuyla ilgili bilgileri burada bulabilirsiniz. Bunu çözmek için bunun yerine aşağıdakileri kullanın:

$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)

4
bu benim görüşüme göre kabul edilen cevaptan daha doğru. zsh'nin / usr / bin / zsh dizininde kurulu olduğunu varsayarsak, diğer yanıtlar çalışmaz. OP için çalıştılar çünkü varsayılan olarak Apple zsh'ı / bin / zsh dizinine yükler. Bununla birlikte, homebrew'in zsh'sini (/ usr / local / bin / zsh altına kurulmuş olan) kullanmak istiyorsanız, bunu yapmanın doğru yolu bu olacaktır
verboze

"Bash: / etc / shells: İzin reddedildi" bilgim var. Sistem Tercihleri ​​aracılığıyla cevap benim için çalıştı.
Ricardo Stuven

44
Eğer alırsanız /etc/shells: Permission denied==> Do yerine: sudo sh -c "echo $(which zsh) >> /etc/shells"
ThisIsFlorianK

1
stackoverflow.com/a/44547726/99834 - sistem dosyalarıyla uğraşmadan çalıştı. Eksik olan tek şey, aynı işlemi yapmak için bir CLI verson.
sorin

@sorin Bu olumsuz oylama karşılıksız vandalizm mi yoksa yanıtta gerçekten yanlış bir şey mi var? Sistem dosyaları, bir nedenle düzenlenebilir metin dosyalarıdır. chshvarsayılan olarak bir nedenle kullanılabilir. Aynı şeyi başarmak için birçok menüye tıklamakta doğal olarak yanlış bir şey olmamasına rağmen, bu yalnızca taşınamaz ve hataya açık değil, aynı zamanda değişikliğin nereden geldiği kullanıcılardan gizlenmesi açısından da yanıltıcıdır.
dangom

52

Aşağıdakileri yaparak bunu çalıştırmayı başardım:

  1. Sistem Tercihlerine Git
  2. "Kullanıcılar ve Gruplar" ı tıklayın
  3. Değişiklik yapmak için kilidi tıklayın.
  4. Mevcut kullanıcıyı sağ tıklayın -> Gelişmiş seçenekler
  5. Açılır menüde oturum açma kabuğunu / bin / zsh olarak değiştirin.
  6. Yeni bir terminal açın ve ile doğrulayın. echo $SHELL

4
zsh'ı homebrew aracılığıyla kurarsanız, zsh'ı içine yerleştirir /usr/local/bin/zsh. Bu nedenle , hombrew'in yüklediği zsh çalıştırılabilir dosyasını seçmeden önce /etc/shellssudo altında düzenlemeniz ve bir giriş eklemeniz gerekecek/usr/local/bin/zsh
Baldy

8

İşim MacBook'ta bunu yapmam gerekiyordu:

sudo chsh -s /usr/local/bin/zsh my_user_name

Sonra, .bash_profileterminalimi her açtığımda z-shell'e geçirmek için bir dosya oluşturmam gerekiyordu:

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

Son fikir buradan ödünç alındı .

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.