chsh değişmez $ SHELL


9

$SHELLOSX'in iTerm uygulamasının değerini değiştirmede bazı zorluklar yaşıyorum . iTerm başlıyor /bin/zsh, ancak değeri $SHELLdeğişmiyor.

Ne yaptım:

  1. "Komut" /bin/zsh, iTerm'in yapılandırma penceresindeki gibi değiştirildi.
  2. chshKabuğu olarak değiştirmek için yürütüldü /bin/zsh.
  3. Onaylandı iTerm başlatıldı /bin/zsh

NOT 1: OSX'in stok terminal uygulamasında "Terminal.app":

echo $SHELL
/bin/zsh

NOT # 2: OSX'in popüler terminal uygulamasında "iTerm.app":

$ echo $SHELL
/bin/bash

$ echo $USER
$ melvkim

$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made

1
Baktın mı /etc/shells? Kılavuz, belirttiğiniz kabuk bu dosyada değilse, standart bir kabuk olarak değerlendirilmediğini belirtir.
Bob Dalgleish

Yanıtlar:


5

Sorun "iTerm" app kabuk ile çakışan ayarları oldu. Çözmek için iTerm tercih penceresinde "login shell" komutunu sıfırladım:

iTerm.app -> Tercihler -> Profiller -> Genel -> Komut -> "Giriş kabuğu" nu tıklayın

Sonra, chsholarak değiştirmek için idam /bin/zsh.

Sorunu yeniden oluşturmak için ( /bin/bash/oturum açma kabuğu olsa bile $ SHELL olarak ayarlanmış /bin/zsh), "iTerm" ayarını tekrar "Command: / bin / zsh /" olarak değiştirmek zorunda kaldım.


1

-sİçin bayrak chshsadece girişimleri kabuk değiştirmek ve muhtemelen Open Directory nedeniyle başarısız etmek: zamanki UNIX sistem 'chsh' değiştirebilecek /etc/passwdgirdiyi. Ancak, chshbana bir editör ve aşağıdaki bilgileri veren hiçbir argüman olmadan çalışabildim :

# Changing user information for nevin.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/tcsh
Full Name: Nevin Williams
Office Location:
Office Phone:
Home Phone:

"Shell:" girdisini düzenleyebildim /bin/zshve sonraki Terminal pencereleri Z-shell istemiyle açıldı.


chshHiçbir argüman ile denedim . Hala şans yok. Değişken değişmez. Aslında, editör yüklendiğinde gösterdi /bin/zsh.
melvynkim

Kabuğu düzenleyiciyle değiştirmeyi deneyin. / Bin / tcsh'den / bin / zsh'a ve arkama geçerek ekran görüntüsü aldım. bonmot.ca/~nevin/chsh.mov
Nevin Williams

Ekran görüntünüzü yayınlayarak zaman ayırdığınız için çok teşekkür ederiz! Çözümünüzün diğer terminal emülatörleri üzerinde çalışması gerekiyordu, ancak iTerm'de değişiklik yapamadım $SHELL. Lütfen detaylar için cevabım bölümüne bakınız ..
melvynkim

1

@ Mklement0 [tarafından bir yükseltme sorunuyla ilgili olarak gönderilen mükemmel açıklama ve çözüm için buraya bakın bash.

Benim sistemde tam tersini yaparak benzer bir sorun vardı (OS X 10.10.1): yapım bashBen yüklü sonra tekrar varsayılan giriş kabuğu oh-my-zshyapılan hangi zshvarsayılan ve ardından yükseltme bashHomebrew (kullanarak 4.3.30 için 3.2.53 den Apple neden Yosemite'yi eski bir bashsürümle gönderiyor?).

Bence SHELLortam değişkeni yansıtır ama yok değil kullanıcı için gerçek varsayılan giriş kabuğu kontrol eder. Örneğin, diyelim ki bashvarsayılanınız varsa ve bashterminalden yeni bir kabuk penceresi açarsanız o $ export SHELL="/bin/zsh"; echo "$SHELL"zaman gösterecektir, /bin/zshancak terminalden yeni bir kabuk penceresi açar ve yaparsanız $ echo $0göreceksiniz -bash( $0adı ve yolu içerir) Bu durumda, kabuk penceresini başladı komuta bashve -onun yanında o) giriş kabuğu olduğunu gösterir.

@ Mklement0, kullanıcının gerçek varsayılan giriş kabuğunun kullanıcının UserShelldahili veritabanındaki kullanıcının kaydındaki özellik tarafından kontrol edildiğini belirttiğinden, bu komut satırı yardımcı programı kullanılarak sorgulanabilir ve güncellenebilir dscl. Bir kabuk penceresi açtığınızda bu bilgiler terminal uygulamanıza aktarılır.

Yapmak için chsh -s /bin/zshbu UserShellözelliği değiştirmek için değiştirin zsh- dscl . -read /Users/$USER/ UserShellhemen sonra bunu kontrol edebilirsiniz ve göreceksiniz UserShell: /bin/zsh. Ama değişiklik olduğunu değil gibi bir şey yapana kadar, geçerli pencerede etkilenen exec su - $USER@ mklement0 önerdiği gibi, ya da yakın size kadar ve bir kabuk penceresini açın.


0

Komutu çalıştırmayı deneyin: chsh -s /bin/zshvarsayılan Mac terminalinden.


1
Bu OP'den farklı olarak ne yapar?
JMY1000

@ JMY1000 Bu komutu iTerm'den yürütmeye çalışırsanız, değişiklikler yansıtılmaz. Mac'in varsayılan terminalinden çalıştırarak çalıştırabilmeniz gerekir.
mohitmayank
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.