Cygwin'de varsayılan kabuk nasıl değiştirilir?


29

Varsayılan kabuğumu bash'dan cygwin'de zsh'ye değiştirmeye çalışıyorum.

  1. Normal unix komutu chshcygwin'de kullanılamaz
  2. Göründüğü gibi etc / passwd dosyası, cygwin'in mevcut sürümlerinde artık kullanılmamaktadır.

Peki, varsayılan kabuk başka nasıl değiştirilebilir?

Yanıtlar:


22

Cevap, Cygwin'i nasıl başlattığınıza bağlıdır.

Cygwin'i Cygwin.bat ile başlatırsanız , son satırını değiştirin /Cygwin.bat(genellikle C:\cygwin\veya C:\cygwin64\).

Cygwin'i mintty ile başlatırsanız , kabuğu bir parametre olarak ekleyin. mintty /usr/bin/zsh -


2
Teşekkür ederim, Conemu kullanıyorum. Değiştirmek zorunda kaldı sh.exeiçin zsh.exeConemu Ayarlar> Başlangıç> görevler> bash Cygwin Bash> içindeset CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy

@gyaani_guy Sadece ConEmu'yu çalıştırmak için kullanıyorum CygWin\bin\zsh.exe. sh.exe --loginBash'i başlatacak, nasıl değiştirirsiniz? Yoksa bunun önemi yok mu? Öncesinde sh.exe --logingereksiz yere yürütme olduğunu hayal ediyorum ...shzsh
deed02392

@ deed02392 Emin anlıyorum değilim .. ama kullanıyorum tam komut set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy

@gyaani_guy teşekkürler, kafam karıştı çünkü ilk yorumunuzda zsh ile başladığınızı ima ediyor gibiydiniz sh.exe. Şimdi farkettim ki mesajınızı doğru
okumadım

3
Mintty örneği benim için pek işe yaramadı. Ben ekleyerek bir giriş kabuğu yapana kadar sorunları vardı -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan Mayıs

18

mintty.exeDoğrudan çalıştırıyorsanız veya Başlat menüsünden veya masaüstünden Cygwin Terminali'ni çalıştırıyorsanız (mintty.exe'nin kısayolu), Windows'ta SHELL ortam değişkenini ayarlayabilirsiniz /usr/bin/zsh.

Windows 7'de:

  1. Windows tuşuna basın.
  2. "Environment" yazmaya başlayın.
  3. Göründüğünde, "Hesabınız için ortam değişkenlerini düzenle" yi seçin.

Gerisi kendi kendini açıklayıcı olmalıdır.


5
Bunun cidden daha fazla oy alması gerekiyor. Bunu hiçbir yerde belgelenmiş görmedim ve açık bir şekilde amaçlanan yöntem.
Kevin Mills,

1
Uygun paneli bulmak için aramaya güvenmek istemeyenler için, Başlat menüsünü sağ tıklayın ve Sistem kontrol panelini başlatmak için "Sistem" seçeneğini seçin. Sonra soldaki sütundan "Gelişmiş sistem ayarları" tıklayın. Açılan "Sistem Özellikleri" penceresinde, ortam değişkeni düzenleyicisini başlatmak için "Ortam Değişkenleri ..." seçeneğini tıklayın.
David C.

Mükemmel çalıştı!
bkunzi01

16

Yığın Taşması konusundaki cevabımdan kopyalandı :


Bunun yerine Cygwin bir passwd dosyası, yaratma karşı önerir 1 , sen olabilir /etc/nsswitch.conf düzenlemek . Aşağıdaki satırı ekleyin veya düzenleyin:

db_shell: / usr / bin / balık

Bu yöntemin aşağı / yukarı tarafı, birden fazla kullanıcınız varsa, bu değişikliğin hepsini etkilemesidir. Yukarı / yukarı tarafı ölü olduğu basit. Tek yakalamak, Cygwin'i yeniden başlatmanız gerektiğidir.

Eğer varsa yapmak bu değişiklikten sonra kullanım mkpasswd, bu oturum için izin verilen tüm kullanıcılar için yeni varsayılan kabuk kullanacaktır.


1 mkpasswd belgeleri şunu söylüyor:

Gerçekten gerekli olmadıkça, yerel / etc / passwd dosyasını oluşturmak için bu komutu kullanmayın. Daha fazla bilgi için Cygwin Kullanıcı Kılavuzu'na bakın.

Kullanıcılarınızda ve gruplarınız değiştiğinde yeterince iyi olduğunu varsayarsak / etc / passwd ve / etc / group dosyalarını yeniden oluşturmanız gerekeceğinden bahsetmek dışında , kullanıcı kılavuzunda gerçekten sağlam bir mantık bulamıyorum. sebep. Sürecin yeni başlayanlar için eğilimli bir hata olduğunu söyleyebilirim.


7

Bu bir hack: bunu ilk satırınız olarak koyun ~/.bash_profile:

exec zsh
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.