Come modificare la shell predefinita in Cygwin?


29

Sto cercando di cambiare la mia shell predefinita da bash a zsh in cygwin.

  1. Il normale comando unix chshnon è disponibile su cygwin
  2. Sembra che il file etc / passwd non sia più utilizzato nelle versioni esistenti di cygwin.

In quale altro modo è possibile modificare la shell predefinita?

Risposte:


22

La risposta dipende da come si avvia Cygwin.

Se avvii Cygwin con Cygwin.bat , modifica l'ultima riga di /Cygwin.bat(di solito C:\cygwin\o C:\cygwin64\).

Se avvii Cygwin con mintty , aggiungi la shell come parametro. mintty /usr/bin/zsh -


2
Grazie, sto usando Conemu. Ho dovuto cambiare il sh.exeverso zsh.exein Impostazioni Conemu> startup> attività> bash Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy

@gyaani_guy Sto solo usando ConEmu per eseguire CygWin\bin\zsh.exe. sh.exe --loginlancerà Bash, come lo cambi? O non importa comunque? Immagino che sh.exe --loginsi shzsh
esegua

@ deed02392 Non sono sicuro di aver capito .. ma il comando esatto che sto usando è set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy,

@gyaani_guy grazie, ero confuso perché nel tuo primo commento sembravi insinuare che hai iniziato con zsh sh.exe. Ora mi rendo conto di non aver letto correttamente il tuo messaggio :-)
deed02392

3
L'esempio perfetto non ha funzionato per me. Ha avuto problemi fino a quando non l'ho trasformato in una shell di login aggiungendo -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan,

18

Se si esegue mintty.exedirettamente o si esegue Cygwin Terminal dal menu di avvio o dal desktop (che è un collegamento a mintty.exe), è possibile impostare la variabile di ambiente SHELL in Windows su /usr/bin/zsh.

Su Windows 7:

  1. Premi il tasto Windows.
  2. Inizia a digitare "ambiente".
  3. Quando viene visualizzato, seleziona "Modifica variabili di ambiente per il tuo account".

Il resto dovrebbe essere autoesplicativo.


5
Ciò richiede seriamente più voti positivi. Non l'ho mai visto documentato da nessuna parte, ed è ovviamente il metodo previsto.
Kevin Mills

1
Per coloro che non vogliono fare affidamento sulla ricerca per trovare il pannello appropriato, fare clic con il tasto destro del mouse sul menu Start e selezionare "Sistema" per avviare il pannello di controllo del sistema. Quindi fai clic su "Impostazioni di sistema avanzate" nella colonna di sinistra. Nella finestra "Proprietà del sistema" che viene visualizzata, fai clic su "Variabili d'ambiente ..." per avviare l'editor delle variabili d'ambiente.
David C.,

Ha funzionato perfettamente!
bkunzi01,

16

Copiato dalla mia risposta su Stack Overflow :


Invece di creare un file passwd, che Cygwin consiglia contro 1 , è possibile modificare /etc/nsswitch.conf . Aggiungi o modifica la seguente riga:

db_shell: / usr / bin / fish

Il lato negativo / su di questo metodo è che, se si hanno più utenti, questa modifica ha effetto su tutti loro. Il lato positivo è che è semplicissimo. L'unico problema è che devi riavviare Cygwin.

Se fai uso mkpasswd dopo questa modifica, utilizzerà la nuova shell di default per tutti gli utenti che sono autorizzati ad accedere.


1 La documentazione di mkpasswd dice questo:

Non usare questo comando per generare un file / etc / passwd locale, a meno che tu non ne abbia davvero bisogno. Consultare la Guida dell'utente di Cygwin per ulteriori informazioni.

Non riesco davvero a trovare alcun solido ragionamento nella guida per l' utente , a parte una menzione del fatto che dovrai rigenerare i file / etc / passwd e / etc / group se i tuoi utenti e gruppi cambiano, che suppongo sia abbastanza decente ragionare. Posso dire che il processo è in qualche modo soggetto a errori per i neofiti.


7

Questo è un trucco: mettilo come prima riga del tuo ~/.bash_profile:

exec zsh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.