OSX'te zsh'den bash'a geçip tekrar dönüyor musunuz?


194

Bu yüzden Raylarda gelişmeyi öğreniyorum ve zsh'ın gücünü keşfettim. Ancak, diğer bazı görevlerim için normal Bash kullanmak istiyorum. Her ne kadar aynı olsalar da, bazı durumlarda bash'ın döşenmesinden kendimi rahat hissediyorum. Nasıl ileri ve geri hareket edebilir veya zsh'yi açabilir ve kapatabilirim? Teşekkürler!

Yanıtlar:


382

execMevcut kabuğunuzu yeni bir kabukla değiştirmek için kullanabilirsiniz :

Şuna geç bash:

exec bash

Şuna geç zsh:

exec zsh

Bu, yeni terminal pencerelerini veya herhangi bir şeyi etkilemez, ancak uygundur.


1
Rica ederim! Bu yanıttan memnunsanız, lütfen yanıtın solundaki onay işaretini işaretleyerek yanıt olarak kabul edildi olarak işaretleyin. Teşekkürler!
larsks

1
Ya da sadece zsh'i çağır ve bash'a exitgeri dönmeyi bitirince. Bunu yapmak gereksiz ve istenmeyen görünüyor.
Chris Page

Tümü, çıkışta terminal pencerenizin ne yapmasını beklediğinize bağlıdır. Bir alt kabuğa başlamayı gereksiz ve istenmeyen buluyorum, kendim.
larsks

2
Varsayılanı nasıl değiştirirsiniz? Ayrıca, zsh "exec bash" yaptığımda, benim bash_profile kaynak değil.
kalehv

1
Zsh kullanmak istediğim zamanlar ve yapmak istediklerime müdahale ettiği zamanlar var. Varsayılanı ileri geri ayarlamak kötü bir fikirdir, bu yüzden bu mükemmel bir çözümdür !!! şeref !!
Bob Roberts

126

bash'ı varsayılan olarak ayarlamayı chsh -s /bin/bashveya chsh -s /bin/zshzsh'yi varsayılan olarak ayarlamayı deneyebilirsiniz .


54

Sık sık zsh ve bash arasında geçiş yapıyorum. Bir süre, bash_profile'ımın her anahtarını kaynaklamak zorundaydım. Sonra (tipik olarak) yapabileceğinizi öğrendim

exec bash --login

ya da sadece

exec bash -l

1
Teşekkürler phill, ben düşünce düşünce / dizüstü bilgisayar yüklü ve tüm yapılandırmaları karışıklık. Bahşişiniz bash ortamımı geri kazanmamda yardımcı oluyor.
Seralto

1
"--Login" ne için yazdığın yararlı bir şapka olur mu?
Ewoks

Make bash act as if it had been invoked as a login shell (see INVOCATION below). Kaynak
lony

16

sadece geçici bir anahtar ise

exec'ı yukarıda belirtildiği gibi kullanabilirsiniz, ancak daha kalıcı bir çözüm için.

Kullanabileceğiniz chsh -s / bin / bash ve (bash anahtara) chsh -s / bin / zsh (zsh için anahtara)


12

Bash için deneyin

chsh -s $(which bash)

Zsh için deneyin

chsh -s $(which zsh)

6

zsh, emulateuygun seçenekleri ayarlayarak farklı kabukları taklit edebilen yerleşik bir komuta sahiptir, ancak csh hiçbir zaman tam olarak taklit edilmeyecektir.

emulate bash
perform commands
emulate -R zsh

-R bayrağı tüm seçenekleri bu kabuk için varsayılan değerlerine geri yükler.

Bakınız: zsh kılavuzu


1
Hangi bash sürümünü taklit edeceği belli değil, bash 4.x'i taklit edecek mi? veya 5.x?
Edgar Aroutiounian

2

Sadece bashbash'a geçmek için terminale yazabilmeniz ve sonra zshzsh'a geçmek için yazabilmeniz gerekir. En azından benim için çalışıyor.


Bu daha da basit.
andromeda

2
Bu işe yarar, ancak her yazdığınızda zshveya bashbir alt kabuğa girdiğinizde (geçerli kabuğun altında alt işlem). En üst kabuğa geri dönmek için bir kaç kez çıkış yazmanız gerekir.
RichVel

1

Mac OS Catalina'ta varsayılan etkileşimli kabuk zsh'dir. Kabuğu bash'tan zsh'ye değiştirmek için:

chsh -s /bin/zsh

Ardından Mac şifrenizi girmeniz gerekir. Terminalden çıkın ve tekrar açın. Başarıyla ssh olarak değiştirilip değiştirilmediğini kontrol etmek için aşağıdaki komutu verin.

echo $SHELL

Sonuç / bin / zsh ise, göreviniz tamamlanır.

Tekrar bash olarak değiştirmek için terminalde aşağıdaki komutu verin.

chsh -s /bin/bash

Düğmesini kullanarak tekrar doğrulayın echo $SHELL. Sonra sonuç / bin / bash olmalıdır.


0

yazabilir bashveya her zaman bash kullanmak istiyorsanız:

"iTerm2" ile ilgili

  • Tercihler> Profiller> Komut'a gidin
  • Açılır menüden "Komut" u seçin
  • tip bash

İTerm'i kapatarak test edin ve tekrar açın


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.