Comment configurer zsh pour être le shell par défaut sous Cygwin?
Sauf si vous utilisez cygwin comme environnement multi-utilisateur (dans ce cas, utilisez-le chsh
comme vous le feriez dans un environnement standard.)
Sinon, il suffit de changer le fichier cygwin.bat pour qu'il s'exécute zsh -l -i
au lieu de bash --login -i
et il fonctionnera comme un shell de connexion.
Bien sûr, si vous souhaitez exécuter plusieurs shells dès le démarrage, créez simplement un ensemble de .bat
fichiers pour charger différents shells. ( sh
, ksh
, csh
, fish
Etc.)
J'ai senti que je devrais mettre à jour ceci pour fournir des informations sur le faire sans pour autant le chsh
faire sous Unix. Editez le /etc/passwd
fichier et remplacez les occurrences de /bin/bash
par /bin/zsh
. (C'est effectivement ce que chsh
feraient les choses, mais de cette façon, vous le feriez pour tous les utilisateurs en une fois.)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
et édite le nouveau/etc/passwd
fichier crééSi j'ai bien lu votre question, vous cherchez autre chose que ce que chere fournit (ce qui, d’accord, est plutôt cool en soi).
La version actuelle de Cygwin ne contient pas de fichier / etc / passwd et le système sur lequel je travaille possède des informations de compte Windows dans une base de données de domaine hors de mon contrôle. Par conséquent, chsh n'est plus pris en charge.
J'ai également constaté que bash n'est pas codé en dur dans le script startxwin , ni dans aucun fichier .bat. Il s'avère que vous n'avez pas besoin de manipuler les fichiers .bat du tout.
Cherchant comment changer de shell, j'ai trouvé des conseils sur mkpasswd
Je l'ai ajouté au mélange.
La page de manuel disait:
(Je ne sais pas pourquoi l'espacement est si "off" ...)
J'ai ensuite utilisé la commande suivante:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
La prochaine fois que vous ouvrirez un terminal Cygwin, il ira directement à zsh
Et je pense que c'est ce que vous avez demandé.
la source
Je viens d'ajouter le
bin
répertoire du répertoire cygwin à ma variable d'environnement de chemin Windows, puis de créer un raccourci vers:ou changez simplement le raccourci par défaut du menu de démarrage de cygwin.
la source
/bin/zsh
au lieu dezsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
fonctionne sans ce changement pour moii
n'est pas nécessaire car ce sera un shell de connexion et noninteractive
.Copié de ma réponse sur le dépassement de pile :
Au lieu de créer un fichier passwd, qui Cygwin recommande contre 1 , vous pouvez modifier /etc/nsswitch.conf . Ajoutez ou modifiez la ligne suivante:
Le côté bas / haut de cette méthode est que, si vous avez plusieurs utilisateurs, cette modification les affecte tous. Le bon côté, c'est que c'est simple comme bonjour. Le seul problème 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:
Je ne trouve pas vraiment de motivation solide dans le guide de l’ utilisateur , si ce n’est une mention selon laquelle vous devrez régénérer les fichiers / etc / passwd et / etc / group si vos utilisateurs et vos groupes changent, ce qui, je suppose, est assez correct raison. Je peux dire que le processus est quelque peu sujet aux erreurs pour les débutants.
la source
En supposant que vous souhaitiez changer le shell utilisé dans mintty / Cygwin Terminal, il vérifie d'abord la variable d'environnement SHELL, puis le fichier passwd (désormais inexistant), puis revient à / bin / sh, ce qui semble être le cas. par défaut.
J'ai été en mesure de définir la variable d'environnement SHELL dans Windows sur
/usr/bin/zsh
et cela a fonctionné sans autre changement. Je viens de le changer pour mon utilisateur Windows, pas globalement.La définition d'une variable d'environnement varie probablement selon les versions de Windows. Essayez de rechercher "environnement" dans votre panneau de configuration Windows. Pour moi, sous Windows 7, c’était Panneau de configuration → Système → Paramètres système avancés, ce qui ouvrait le panneau de configuration / la boîte de dialogue Propriétés système, puis l’onglet Avancé, puis le bouton Variables d’environnement, qui ouvrait la boîte de dialogue Variables d’environnement, puis créait une nouvelle variable utilisateur nommée
SHELL
avec la valeur/usr/bin/zsh
. Puis OK, quittez tout cela et démarrez une nouvelle menthe.la source
Je pensais juste que j'ajouterais cette réponse au cas où cela aiderait ceux qui le recherchent. Si vous utilisez chere (qui ajoute une option "Invite Bash ici" au menu contextuel contextuel d'un dossier), vous pouvez le définir sur zsh ("Invite Zsh ici") avec:
la source
Si vous souhaitez utiliser le shell Cygwin dans l’IDE Intellij, utilisez la configuration suivante dans les paramètres / tools / terminal.
Cela va intégrer le shell cygwin dans intellij au lieu de créer une nouvelle fenêtre
la source