Cygwin ile zsh


35

Zsh'yi Cygwin altındaki varsayılan kabuk olarak nasıl yapılandırabilirim?

Yanıtlar:


45

Çok kullanıcılı bir ortam olarak cygwin kullanmıyorsanız (bu durumda chshstandart bir ortamda kullandığınız gibi kullanın ).

Aksi halde, zsh -l -ibunun yerine çalıştırmak için cygwin.bat dosyasını değiştirirsiniz bash --login -ive bir giriş kabuğu olarak çalışır.  

Tabii ki, başlangıçtan itibaren birden fazla mermi çalıştırmak istiyorsanız, sadece .batfarklı mermiler yüklemek için bir dosya grubu oluşturun . ( sh, ksh, csh, fishVs.)

Güncelleştirme...

Bunu yapmadan chsh, Unix'in sonunda yapıp yapmadığımı öğrenmek için bunu güncellemem gerektiğini düşündüm . Edit /etc/passwddosyası ve tekrarlarını değiştirmek /bin/bashile /bin/zsh. (Bu etkili bir şekilde ne chshyapacağını, ancak bu şekilde bir seferde tüm kullanıcılar için bunu yaparsınız .)


15
Varsayılan olarak cygwin'de artık bir / etc / passwd yoktur ve chsh artık desteklenmemektedir. Bu cevap yardımcı olmuyor (10 Nisan 2014).
Jeff Snider,

@ THESorcerer, eve sarhoş olduğunuzda
ocodo

2
@JeffSnider mkpasswd -l -p "$(cygpath -H)" > /etc/passwdyeni /etc/passwddosya oluştur ve düzenle
BrunoLM

17

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.


17

Sadece bincygwin 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.


2
Bunun /bin/zshyerine kullanmak zorunda kaldım zsh.
kraiz

1
the bin directory in the cygwin directory to my Windows Path Environment Variablebenim için bu değişiklik olmadan çalışır
ruslo

io Giriş kabuğu olacak ve çünkü gerekli değildir interactive.
Timo

6

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.


Bu kabul edildi olarak işaretlenmelidir.
Arda

4

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/zshve 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 SHELLdeğeri ile /usr/bin/zsh. Sonra bunların hepsini tamamlayın ve yeni bir mintty başlatın.


Şimdi bu bolca kaldırılmalıdır! Cygwin'in iç işlemelerine karışmayan ve kolayca geri çevrilebilen en basit yol!
pepoluan

1

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

0

IDE Intellij içerisinde Cygwin kabuğunu kullanmak istiyorsanız, ayarları / tools / terminal içinde aşağıdaki ayarları kullanın.

c:\cygwin\bin\zsh.exe -l -i

Bu cygwin kabuğunu yeni bir pencere açmak yerine intellij'in içine yerleştirecek

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.