Yanıtlar:
Çok kullanıcılı bir ortam olarak cygwin kullanmıyorsanız (bu durumda chsh
standart bir ortamda kullandığınız gibi kullanın ).
Aksi halde, zsh -l -i
bunun yerine çalıştırmak için cygwin.bat dosyasını değiştirirsiniz bash --login -i
ve bir giriş kabuğu olarak çalışır.
Tabii ki, başlangıçtan itibaren birden fazla mermi çalıştırmak istiyorsanız, sadece .bat
farklı mermiler yüklemek için bir dosya grubu oluşturun . ( sh
, ksh
, csh
, fish
Vs.)
Bunu yapmadan chsh
, Unix'in sonunda yapıp yapmadığımı öğrenmek için bunu güncellemem gerektiğini düşündüm . Edit /etc/passwd
dosyası ve tekrarlarını değiştirmek /bin/bash
ile /bin/zsh
. (Bu etkili bir şekilde ne chsh
yapacağını, ancak bu şekilde bir seferde tüm kullanıcılar için bunu yaparsınız .)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
yeni /etc/passwd
dosya oluştur ve düzenle
Sorunuzu doğru okuduysanız, chere'in sağladığı şeyden başka bir şey arıyorsunuz (verilen, kendi başına oldukça iyidir).
Cygwin'in mevcut sürümünde / etc / passwd dosyası bulunmuyor ve üzerinde çalıştığım sistemde kontrolüm dışındaki bir etki alanı veritabanında Windows hesap bilgileri var. Sonuç olarak, chsh artık desteklenmiyor.
Ayrıca bash'ın startxwin betiğine kodlanmış olmadığını ve herhangi bir .bat dosyasında kodlanmış olmadığını da buldum . Sonuçta .bat dosyalarıyla uğraşmanıza gerek kalmayacak.
Kabuğumu nasıl değiştireceğimi ararken mkpasswd ile ilgili bir tavsiye buldum.
Karışıma ekledim.
Adam sayfası dedi ki:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(Aralığın neden bu kadar "kapalı" olduğunu bilmiyorum ...)
Daha sonra aşağıdaki komutu kullandım:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee-a / etc / passwd
Bir Cygwin Terminali'ni bir sonraki açışınızda, doğrudan zsh'ye gidecektir.
Ve bence, istediğin şey bu.
Sadece bin
cygwin dizinindeki dizini Windows Path Ortam Değişkenlerime ekliyorum ve sonra aşağıdakilere bir kısayol oluşturuyorum:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
veya sadece varsayılan cygwin başlat menüsü kısayolunu aynı şekilde değiştirin.
/bin/zsh
yerine kullanmak zorunda kaldım zsh
.
the bin directory in the cygwin directory to my Windows Path Environment Variable
benim için bu değişiklik olmadan çalışır
i
o Giriş kabuğu olacak ve çünkü gerekli değildir interactive
.
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 / zsh
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.
Mintty / Cygwin Terminalinde kullanılan kabuğu değiştirmekle ilgilendiğinizi varsayarsak, önce SHELL ortam değişkenini, sonra (şimdi varolmayan) passwd dosyasını kontrol eder, sonra ne yapıyor göründüğü gibi / bin / sh'a geri döner. varsayılan olarak.
Ben KABUK ortam değişkeni ayarlamak başardı Windows için /usr/bin/zsh
ve herhangi başka bir değişiklik olmadan çalıştı. Global olarak değil, Windows kullanıcım için değiştirdim.
Bir ortam değişkeni ayarlamak muhtemelen Windows'un farklı sürümleri için değişiklik gösterir. Windows Denetim Masanızda "ortam" aramayı deneyin. Benim için, Windows 7 altında, Sistem Özellikleri kontrol panelini / iletişim kutusunu, ardından Gelişmiş sekmesini, ardından Ortam Değişkenleri diyalog penceresini getiren, Ortam Değişkenleri düğmesini, ardından oluştur adlı yeni bir kullanıcı değişken SHELL
değeri ile /usr/bin/zsh
. Sonra bunların hepsini tamamlayın ve yeni bir mintty başlatın.
Sadece bu soruyu aramaya kimseye yardım etmesi durumunda ekleyeceğimi düşündüm. Herhangi bir klasörün sağ tıklandığında içerik menüsüne (burada Bash komut istemi ekler) seçeneği ekleyen) kullanıyorsanız, şunu kullanarak zsh ("Burada Zsh İstemi") ayarını yapabilirsiniz:
chere -i -t mintty -s zsh