Pour rendre les commandes Cygwin disponibles depuis bash
, indépendamment de la façon dont vous le lancez, ainsi que depuis cmd
ou tout autre shell, assurez-vous que votre variable d'environnement Path
contient le répertoire bin
de Cygwin ajouté.
Allez dans Panneau de configuration > Système et sécurité > Système
(raccourci standard Win+Pause
), puis Paramètres système avancés > Variables d'environnement
. Pour tous les utilisateurs, modifiez la variable système Path
, juste pour votre utilisateur - modifiez (créez si elle n'existe pas) la variable utilisateur Path
.
En supposant que cygwin
est installé dans C:\cygwin
(peut être cygwin64 pour Cygwin 64 bits), ajoutez C:\cygwin\bin
au Path
. Gardez à l'esprit que si vous utilisez la variable système Path
, si vous ajoutez le bin
de Cygwin au début, certaines commandes de Cygwin pourraient écraser celles intégrées (par exemple, la commande find
de Cygwin sera utilisée au lieu de celle de Windows). Je préfère le faire, mais si vous ne le faites pas, ajoutez le bin
de Cygwin à la fin de votre Path
.
Étant donné que la plupart des autres réponses parlent également de la configuration de ConEmu, je donnerai aussi mon avis personnel.
Je préfère exécuter un shell non-login. Par exemple, sous Linux, vous obtenez un shell de connexion lorsque vous vous connectez à la console texte ou via ssh, et un shell interactif non-login lorsque vous ouvrez un terminal émulateur (xterm, konsole, etc.).
Ma tâche {Bash} a les paramètres de tâche /dir "%CD%"
pour définir le répertoire de travail sur celui du répertoire de travail de l'onglet actuel (par exemple, si la tâche bash vient de Far). La commande pour démarrer bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"
Remarquez que les options --login -i
sont omises, le shell démarrera comme un shell interactif non-login (puisqu'il n'a pas d'arguments sans option et sans l'option -c, et son stdin et stdout sont connectés aux terminaux, consultez la section INVOCATION de la page de manuel de bash pour plus d'explications). Il lira et exécutera les commandes du fichier rc de l'utilisateur ~/.bashrc
(et non /etc/profile
ou ~/.bash_profile
comme le ferait un shell de connexion, donc vous n'avez pas besoin de set CHERE_INVOKING=1
qui est uniquement pertinent par rapport à /etc/profile
). Donc placez vos alias utilisateurs, options de shell, variables d'environnement supplémentaires, etc. dans ~/.bashrc, où ils appartiennent légitimement.