Comment configurer ConEmu pour exécuter Cygwin Bash?


42

J'ai créé une nouvelle tâche

{Frapper}

passé mon répertoire personnel

/ dir "C: \ Users \ TMB \"

et ajouté bash en tant qu'application

C: \ cygwin \ bin \ bash.exe

Lorsque j'ouvre Bash, il est impossible d'utiliser les utilitaires de base UNIX / Cygwin. Comment configurer ConEmu pour exécuter Cygwin Bash?


Quelle version de ConEmu vous essayez? En outre, toutes les versions de bash ne prennent pas en charge le répertoire de travail. Git bash - peut, si je me souviens bien.
Maximus

Je ne savais pas comment définir mon répertoire de travail dans mon profil bash, mais je pense avoir trouvé une solution plus générale en dessous de la réponse marquée.
TMB

ConEmu x64 120727c.x64
TMB

Par "répertoire de travail", je veux dire celui que vous spécifiez avec le commutateur / dir. BTW, avez-vous lu cette réponse? superuser.com/a/482340/139371
Maximus

Réponses:


48

Cela pourrait aider les autres.

Il semble que la version 140310 de ConEmu détecte automatiquement CygWin Bash.

Si vous avez installé Cygwin après ConEmu, vous devrez recharger ... votre liste de tâches.

  1. Aller aux paramètres ... (Win + Alt + P)
  2. Accédez à votre liste de tâches (démarrage> tâches).
  3. Cliquez sur le bouton Recharger ....

Vous devriez maintenant voir {CygWin bash} comme l'une de vos options dans la liste des tâches prédéfinies:

Capture d'écran de CygWin bash dans ConEmu

PS - Si cette méthode ne fonctionne pas, essayez de réinitialiser vos paramètres ConEmu (cliquez sur le bouton Réinitialiser ... au bas de la fenêtre Paramètres ).


2
Et si le rechargement et la réinitialisation ne fonctionnent pas, je suppose que nous pourrions entrer le chemin, la commande et les options comme indiqué dans votre capture d'écran.
TMB

%SystemDrive%\cygwin64\bin\sh.exe --login -ipour moi sur 140304 sur la chaîne de prévisualisation.
TMB

3
Pour moi, en cliquant sur le Add default tasks...bouton (juste au-dessus du Reloadbouton) a fait le tour ...
Hanan N.

9
Notez que sh.exe ne source pas votre .bashrc; seul bash.exe le fera. Donc, j'utilise la commande%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior

Le commentaire de @ JohnPrior est en réalité très utile. La variable PATH était totalement fausse lors de l'utilisation de sh.exe, mais avec bash.exe, elle peut désormais trouver mes applications.
flungo

7

ou au lieu de

C:\cygwin\bin\bash.exe

utilisation

C:\cygwin\Cygwin.bat

Je pense que c'est en effet le moyen le plus simple.
laurent

6

Assurez-vous que Bash reçoit une valeur raisonnable pour $PATH; généralement, il hérite de tout ce qui l’appelle, mais ConEmu étant une application Windows, elle ne fournit que ce que vous avez défini %Path%. Généralement, cela n'inclut pas les répertoires de chemins Cygwin, donc Bash ne sait pas où chercher ls, etc.

Pour résoudre ce problème, je résoudrais le problème en passant des --login -iarguments de ligne de commande à Bash , quels que soient les moyens proposés par ConEmu . cela lui dire que vous utilisez comme un shell interactif de connexion, il va lire /etc/profile, ~/.profileet ~/.bashrcau démarrage. D'après mon expérience, cela a suffi pour lui donner un sens $PATH; si cela ne fonctionne pas pour vous, vous pouvez le spécifier explicitement avec une ligne comme PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHdans votre ~/.bashrc.


Cela m'a fourni les utilitaires que je recherchais ensuite. Je voulais pointer vers mon répertoire personnel Windows normal, /cygdrive/c/cygwin/homemais j'ai donc supprimé homeet fait une jonction avec mklink -J home C:\Usersin cmd.exe
TMB.

3
Content d'avoir fait le travail pour vous. Je n'avais jamais pensé à utiliser une jonction pour pointer ~ vers c: \ utilisateurs \ moi, mais je l'avais déjà fait avec un lien symbolique, et c'est à partir de cette expérience que je vous avertis si vous devez exécuter ComboFix pour nettoyer un malware. infestation sur votre machine, tous les fichiers de c: \ users \ you seront supprimés . J'ai tout perdu de cette façon dans mon répertoire personnel une fois, et ma nouvelle sauvegarde date de la semaine. Ne faites pas la même erreur que j'ai faite!
Aaron Miller

2

C'est mon chemin

Créer une nouvelle tâche dans ConEmu avec la commande suivante

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -

Votre solution fonctionne et j'aime bien avoir l'interface mintty.exe, mais pouvez-vous expliquer pourquoi cela fonctionne? Surtout que fait le "&" ici?
Dr. Koutheir Attouchi

0

Je sais que c'est une assez vieille question mais je voulais quand même partager ceci:

Pour démarrer le bash dans un répertoire de travail spécifique, définissez simplement la commande par exemple sur SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"et spécifiez le répertoire de travail normalement via /dir "..."comme décrit ici .


0

Pour rendre les commandes Cygwin disponibles à partir de bash, quel que soit le mode d’exécution, ainsi que de cmdou de tout autre shell, assurez-vous que Pathle binrépertoire de Cygwin a été ajouté à votre variable d’environnement .
Allez à Control Panel > System and Security > System(raccourci clavier standard Win+Pause), puis Advanced system settings > Environment variables. Pour tous les utilisateurs, éditez la Pathvariable système , juste pour votre utilisateur - éditez (créez s'il n'existe pas) la Pathvariable utilisateur .
En supposant que cygwinsoit installé à C:\cygwin(peut être cygwin64 pour Cygwin 64 bits), ajoutez C:\cygwin\binà la Path. Sachez que si vous utilisez la Pathvariable système , si vous ajoutez binau début Cygwin, certaines commandes de Cygwin masqueront celles intégrées (par exemple, Cygwin findsera utilisé à la place de Windows).find). Je préfère le faire, mais si vous ne le faites pas, ajoutez Cygwin binà la fin de votre Path.

Comme la plupart des autres réponses parlent également de la configuration de ConEmu, je donnerai également mon opinion personnelle.

Je préfère exécuter un shell sans connexion. Par exemple, sous Linux, vous obtenez un shell de connexion lorsque vous vous connectez à la console de texte ou via ssh, et un shell interactif sans connexion lorsque vous ouvrez un émulateur de terminal (xterm, konsole, etc.).

Ma tâche {Bash} a des /dir "%CD%"paramètres de tâche pour définir le répertoire de travail sur le répertoire de travail de l'onglet actuel (par exemple, si la tâche bash de Far). La commande pour démarrer bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

Les --login -ioptions de notification sont omises, le shell commencera comme un shell interactif sans connexion (puisqu'il n'a pas d'argument non-option et sans l'option -c, et que stdin et stdout sont connectés aux terminaux, reportez-vous à la section INVOCATION de la page de manuel de bash pour plus d'informations. explication). Il lira et exécutera les commandes de l'utilisateur rcfile ~/.bashrc(pas /etc/profileou ~/.bash_profilecomme le ferait un shell de connexion, vous n'avez donc pas besoin de savoir set CHERE_INVOKING=1ce qui est pertinent en ce qui concerne /etc/profile). Mettez donc vos alias d’utilisateur, vos options de shell, vos variables d’environnement supplémentaires, etc. dans ~ / .bashrc, là où ils appartiennent légitimement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.