Comment changer le shell par défaut dans Cygwin?

29

J'essaie de changer mon shell par défaut de bash en zsh dans cygwin.

  1. La commande Unix normale chshn'est pas disponible sur cygwin
  2. Il semble que le fichier etc / passwd ne soit plus utilisé dans les versions existantes de cygwin.

Alors, comment changer le shell par défaut?

gyaani_guy
la source

Réponses:

22

La réponse dépend de la façon dont vous démarrez Cygwin.

Si vous démarrez Cygwin avec Cygwin.bat , modifiez la dernière ligne de /Cygwin.bat(généralement C:\cygwin\ou C:\cygwin64\).

Si vous démarrez Cygwin avec mintty , puis ajoutez le shell en tant que paramètre. mintty /usr/bin/zsh -

Steven
la source
2
Merci, j'utilise Conemu. Nous avons dû changer sh.exeà zsh.exedans Conemu Paramètres> Démarrage> Tâches> bash Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy
@gyaani_guy J'utilise juste ConEmu pour exécuter CygWin\bin\zsh.exe. sh.exe --loginva lancer Bash, comment changez-vous cela? Ou cela n'a-t-il pas d'importance de toute façon? J'imagine qu'il sh.exe --logins'exécute inutilement shavant zsh...
deed02392
@ deed02392 Je ne suis pas sûr de comprendre .. mais la commande exacte que j'utilise est set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy
@gyaani_guy merci, j'étais confus parce que dans votre premier commentaire vous sembliez impliquer que vous commenciez zsh avec sh.exe. Maintenant, je me rends compte que je n'ai tout simplement pas lu votre message correctement :-)
deed02392
3
L'exemple de menthe n'a pas tout à fait fonctionné pour moi. Il y avait des problèmes jusqu'à ce que j'en fasse un shell de connexion en ajoutant -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan
18

Si vous exécutez mintty.exedirectement ou exécutez Cygwin Terminal à partir du menu Démarrer ou du bureau (qui est un raccourci vers mintty.exe), vous pouvez définir la variable d'environnement SHELL dans Windows sur /usr/bin/zsh.

Sous Windows 7:

  1. Appuyez sur la touche Windows.
  2. Commencez à taper "environnement".
  3. Lorsqu'il apparaît, sélectionnez "Modifier les variables d'environnement pour votre compte".

Le reste devrait être explicite.

dc46and2
la source
5
Cela nécessite sérieusement plus de votes positifs. Je n'ai jamais vu cela documenté nulle part, et c'est évidemment la méthode prévue.
Kevin Mills
1
Pour ceux qui ne veulent pas se fier à la recherche pour trouver le panneau approprié, cliquez avec le bouton droit sur le menu Démarrer et sélectionnez "Système" pour lancer le panneau de configuration du système. Cliquez ensuite sur "Paramètres système avancés" dans la colonne de gauche. Dans la fenêtre "Propriétés système" qui apparaît, cliquez sur "Variables d'environnement ..." pour lancer l'éditeur de variables d'environnement.
David C.
Fonctionne parfaitement!
bkunzi01
16

Copié de ma réponse sur Stack Overflow :


Au lieu de créer un fichier passwd, ce que Cygwin recommande contre 1 , vous pouvez éditer /etc/nsswitch.conf . Ajoutez ou modifiez la ligne suivante:

db_shell: / usr / bin / fish

L'inconvénient de cette méthode est que si vous avez plusieurs utilisateurs, cette modification les affecte tous. Le côté positif / positif est que c'est très simple. Le seul hic, c'est que vous devez redémarrer Cygwin.

Si vous faites usage mkpasswd après ce changement, il utilisera votre nouveau shell par défaut pour tous les utilisateurs qui sont autorisés à se connecter.


1 La documentation de mkpasswd dit ceci:

N'utilisez pas cette commande pour générer un fichier / etc / passwd local, sauf si vous en avez vraiment besoin. Voir le Guide de l'utilisateur Cygwin pour plus d'informations.

Je ne trouve pas vraiment de raisonnement solide dans le guide de l' utilisateur , à part une mention selon laquelle vous devrez régénérer les fichiers / etc / passwd et / etc / group si vos utilisateurs et groupes changent, ce qui, je suppose, est assez décent raison. Je peux dire que le processus est quelque peu sujet aux erreurs pour les débutants.

P papa
la source
7

Ceci est un hack: mettez-le comme première ligne de votre ~/.bash_profile:

exec zsh
glenn jackman
la source