Comment utiliser Bash sous Windows à partir du terminal intégré Visual Studio Code?

Réponses:

347

Vous n'avez plus besoin de taper manuellement le chemin bash.exe. Cette réponse est obsolète. Vous pouvez maintenant passer directement à bash. Assurez-vous simplement que git est installé.


Installez Git depuis https://git-scm.com/download/win .

Ouvrez ensuite Visual Studio Code et ouvrez la palette de commandes à l'aide de Ctrl+ Shift+ P. Tapez ensuite "Ouvrir les paramètres utilisateur", puis sélectionnez "Ouvrir les paramètres utilisateur" dans le menu déroulant.

Palais de commandes de Visual Studio Code

Ensuite, cet onglet s'ouvrira avec les paramètres par défaut à gauche et vos paramètres à droite:

entrez la description de l'image ici

Maintenant, copiez cette ligne de code sur votre propre page de paramètres (le volet de droite) et enregistrez - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Remarque: "C:\\Program Files\Git\bin\bash.exe" est le chemin d'accès au bash.exefichier depuis l'installation de Git. Si vous utilisez le shell Bash du sous-système Windows pour Linux (WSL), le chemin d'accès serait"C:\Windows\System32\bash.exe"

Appuyez maintenant sur Ctrl+ `pour ouvrir le terminal à partir de Visual Studio Code. Et vous aurez Bash -

Entrez la description de l'image ici

Mahade Walid
la source
1
Ce sont les couleurs par défaut de git bash.
Mahade Walid
5
Deux infos, qui pourraient être utiles: assurez-vous que vous échappez des caractères antislash dans votre json, lors de l'écriture du chemin. Assurez-vous également que vous incluez la version 64 bits de git bash dans votre vscode, car la version 32 bits peut ne pas avoir les couleurs par défaut. (Il suffit de retirer la partie "(x86)" du chemin)
Lajos Meszaros
2
Ajout à Lajos, si vous ne voyez toujours pas le terminal s'ouvrir, essayez de redémarrer vscode.
adityah du
3
J'étais confronté à un problème avec "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe", le terminal n'ouvrait pas. J'ai essayé "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". A parfaitement fonctionné pour moi.
Dharmjeet Kumar
28
Pour info, assurez-vous de créer un lien vers bash.exe, et non git-bash.exe. Ce dernier ouvrira un terminal en dehors du code VS dans une fenêtre distincte, tandis bash.exequ'il s'exécutera à l'intérieur du code VS.
Darius
258
  1. Installez Git depuis https://git-scm.com/download/win

  2. Ouvrez Visual Studio Code et maintenez la touche Ctrl+ enfoncée `pour ouvrir le terminal.

    Entrez la description de l'image ici

  3. Ouvrez la palette de commandes à l'aide de Ctrl+ Shift+ P.

  4. Type - Sélectionnez Shell par défaut

  5. Sélectionnez Git Bash parmi les options

  6. Cliquez sur l'icône + dans la fenêtre du terminal

  7. Le nouveau terminal sera désormais un terminal Git Bash. Donnez-lui quelques secondes pour charger Git Bash

    Entrez la description de l'image ici

  8. Vous pouvez désormais basculer entre les différents terminaux ainsi que dans la liste déroulante du terminal.

    Entrez la description de l'image ici

Himanshu
la source
5
Cela a fonctionné pour moi. J'ai essayé tous les autres guides en ajoutant manuellement la bash par défaut, mais cela a simplement ouvert une nouvelle fenêtre de terminal à chaque fois. Merci beaucoup
Glen
3
c'est ce que je cherchais ... ceci devrait être la réponse la plus simple acceptée
Boopathi T
1
Parfaitement expliqué .. Merci pour cette réponse.
SKalariya
si ctrl + `ne fonctionne pas (comme dans, rien ne se passe! même après avoir installé git et défini les paramètres utilisateur json), essayez ceci: ctrl + shift + P> Focus Terminal.
olisteadman
1
Solution plus simple et plus rapide
Themelis
80

Mise à jour: les versions plus récentes de Visual Studio Code ont la commande Select Default Shell dans le menu déroulant du terminal:

Sélectionnez l'option Shell par défaut

N'oubliez pas qu'il répertorie simplement les shells qui se trouvent dans votre variable d'environnement% PATH%. Pour les obus qui ne se trouvent pas sur votre chemin, consultez les autres réponses.

Astuce supplémentaire: lorsque vous démarrez bash, il s'exécutera simplement.Si .bashrcvous avez des commandes d'initialisation, .bash_profilevous devez les copier .bashrc. C'est essentiel pour utiliser les environnements Conda dans Git Bash.

Avant la version 1.36 (juin 2019)

La façon la plus simple maintenant (au moins à partir de Visual Studio Code 1.22) est de taper Shift+ Ctrl+ Ppour ouvrir la palette de commandes et de taper:

Select Default Shell

Maintenant, vous pouvez facilement sélectionner votre shell préféré parmi ceux trouvés sur votre chemin :

Liste de sélection des coques

Pour les shells qui ne sont pas dans votre% PATH%, consultez les autres réponses.

Voir la référence complète du shell Visual Studio Code . Il y a beaucoup de choses charnues.

neves
la source
1
C'était la réponse que je cherchais. Je voulais utiliser WSL Bash mais les autres réponses essayaient d'utiliser le bash fourni avec git
ahmadali shafiee
1
Existe-t-il un moyen d'ouvrir un shell particulier ... sans en faire le "défaut"? Je pense qu'il est logique d'avoir un "bash ouvert" juste cette fois. "
Brent Arias
41

Appuyez et maintenez Ctrl+ `pour ouvrir le terminal. À l'intérieur du terminal, tapez bashpour utiliser Git Bash dans le terminal. Remarque: assurez-vous que Git Bash est installé sur votre ordinateur.

Si vous souhaitez utiliser à nouveau PowerShell, tapez simplement powershellle terminal. Pour utiliser la ligne de commande Windows, saisissez cmdle terminal.

Le paramètre que vous choisissez sera utilisé par défaut.

Isaac Sekamatte
la source
4
cela ajoute plus de valeur à la réponse sélectionnée
pjdupreez
1
Pour "revenir à PowerShell", vous devez probablement le faire exitdepuis votre shell bash exécuté à l'intérieur du shell par défaut, puis tapez powershellcar bash ne sait pas ce qu'est le PowerShell.
Lucas Morgan
13

Pour moi, ce qui suit est la seule combinaison qui fonctionne!

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\git-cmd.exe",
"terminal.integrated.shellArgs.windows": [
  "--command=usr/bin/bash.exe",
  "-l",
  "-i"
]

Avec git-bash.exe comme ...shell.windows, chaque fois que Bash ouvrait en dehors de Visual Studio !!

Dilip Muthukurussimana
la source
1
cela m'a vraiment aidé. J'ai fait bash travailler selon les réponses précédentes ci-dessus, mais j'ai perdu tous mes alias bash et git. Cela les a rachetés. Merci.
David Martin
1
C'est ce qui a fonctionné avec moi: "terminal.integrated.shell.windows": "C: \\ Program Files \\ Git \\ bin \\ bash.exe", "terminal.integrated.shellArgs.windows": ["- -login "," -i "]
Belal Mohammed
Cette solution a également fonctionné pour moi. Une mise en garde à ajouter est que dans mon cas, pour réduire le décalage avec gitbash, suivez ce post stackoverflow.com/questions/32232978/… et définissez une nouvelle variable d'environnement HOME dans Windows. Pour le faire fonctionner correctement dans VSCode, la réponse ci-dessus a parfaitement fonctionné.
Rob B
13

Les choses ont un peu changé en raison des dernières mises à jour sur Visual Studio Code. Les étapes suivantes fonctionnent pour moi.

  1. Appuyez sur Ctrl+ Shift+ Ppour ouvrir la palette de commandes Visual Studio Code.

  2. Tapez >preferences: Open Settings (JSON)dans la zone de texte.

  3. Ajoutez les lignes suivantes à la fin du fichier JSON qui s'affiche dans votre volet droit.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Fermez et rouvrez votre instance de Visual Studio Code.

Aravinda Meewalaarachchi
la source
10

J'ai suivi ce tutoriel de Paul DeCarlo pour utiliser le Bash du sous-système Windows pour Linux (WSL) au lieu de ce qui vient avec Git Bash pour Windows. Ce sont les mêmes étapes que ci-dessus dans la réponse, mais utilisez plutôt les ci-dessous dans vos paramètres utilisateur.

"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe",

Cela a fonctionné pour moi la première fois ... ce qui est rare pour ce genre de choses.

Jay Killeen
la source
1
rare en effet. de pointe
Christopher Painter
7

Cela, au moins pour moi, fera que Visual Studio Code ouvre une nouvelle fenêtre Bash en tant que terminal externe.

Si vous voulez l'environnement intégré, vous devez pointer vers le sh.exefichier dans le bindossier de votre installation Git.

Donc, la configuration devrait dire C:\\<my-git-install>\\bin\\sh.exe.

Christer
la source
5

Cela dépend si vous avez installé Git Bash dans l'utilisateur actuel uniquement ou dans tous les utilisateurs:

S'il est installé sur tous les utilisateurs, insérez "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"vos paramètres utilisateur ( Ctrl+ Comma).

S'il n'est installé que sur l'utilisateur actuel, insérez "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"vos paramètres utilisateur ( Ctrl+ Comma).

Si les méthodes énumérées ci-dessus ne fonctionnent pas, vous devriez essayer la solution de Christer qui dit -

Si vous voulez l'environnement intégré, vous devez pointer vers le sh.exefichier dans le bindossier de votre installation Git.

Donc, la configuration devrait dire C:\\<my-git-install>\\bin\\sh.exe.

Remarque: les sh.exe et bash.exe m'apparaissent complètement identiques. Il ne devrait pas y avoir de différence entre eux.

Shaurya
la source
4

J'avais déjà configuré beaucoup d' condaenvironnements WSL(Bash sur Ubuntu sous Windows), donc je voulais utiliser la même installation Bash sur Visual Studio Code.

Pour ce faire, je devais simplement spécifier le chemin de cet exécutable Bash particulier ( au lieu deGit-Bash ) dans les paramètres de Visual Studio Code:

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"


PS : pour vous assurer que votre exécutable Ubuntu on Bash est installé sur votre machine Windows, ouvrez la Command prompt(recherche:) cmdet exécutez:

where bash.exe

dvitsios
la source
4

Cette réponse est similaire à la réponse la plus votée, mais avec une distinction importante: la plupart des réponses précédentes à cette question se concentrent sur l'exécution de Git Bash tandis que ma réponse se concentre sur l'exécution de WSL Bash .

  1. Activez le sous-système Windows pour Linux sur votre ordinateur Windows 10.

  2. Ouvrez Visual Studio Code et maintenez enfoncé Ctrl + `pour ouvrir le terminal.

  3. Ouvrez la palette de commandes à l'aide de Ctrl + Shift + P.

  4. Tapez - Select Default Shell.

  5. Sélectionnez WSL Bash(NON Git Bash) parmi les options.

entrez la description de l'image ici

  1. Cliquez sur l' +icône dans la fenêtre du terminal. Le nouveau terminal sera désormais un terminal WSL Bash!
therobinkim
la source
4

Dernier code VS:

  • si vous ne voyez pas le fichier settings.json, allez dans le menu Fichier -> Préférences -> Paramètres (ou appuyez sur Ctrl+, )
  • Les paramètres apparaissent, voir deux onglets Utilisateur (sélectionné par défaut) et Espace de travail. Allez dans Utilisateur -> Fonctionnalités -> Terminal
  • La section Terminal apparaît, voir le lien edit in settings.json. Cliquez et ajoutez"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Enregistrez et redémarrez le code VS.

Le terminal Bash réfléchira sur le terminal.

Rijo
la source
1

Il se trouve que je suis consultant pour une entreprise Fortune 500 et que c'est malheureusement Windows 7 et aucun privilège d'administrateur. Ainsi Node.js, Npm, Visual Studio Code, etc. ont été poussés sur ma machine - je ne peux pas changer grand chose, etc ...

Pour cet ordinateur exécutant Windows 7:

Voici mes nouveaux paramètres. Celui qui ne fonctionne pas est commenté.

{
    "update.channel": "none",
    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
    //"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
}
Tom Stickel
la source
0

J'ai essayé les réponses ci-dessus à partir de vscode 1.42.1 et elles ont fonctionné pour me procurer un terminal git bash. Donc, en fin de compte, ce paramètre fonctionne uniquement pour ouvrir un shell bash à partir du terminal:

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Cependant, il a l'effet secondaire indésirable d'être également le shell utilisé pour construire des choses et qui rompt la chaîne MS C ++ car le \caractère utilisé pour le séparateur de chemin est compris par bash comme un caractère d'échappement. Le correctif complet pour moi m'a alors obligé à ajouter cette variable supplémentaire, en la définissant sur PowerShell:

"terminal.integrated.automationShell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"

Maintenant, je peux avoir mon terminal bash et / Ctrl-Shift-Bou F5travailler sans problème.

Oh, et comme d'autres affiches l'ont mentionné, la source de ces informations est la documentation de VSCode .

Coffee_fan
la source
0

Qu'en est-il des obus détachés ou non liés et code [args] support ?

Alors que d'autres réponses parlent de la façon de configurer et d'utiliser la prise en bashcharge du terminal WSL intégré VScode , elles ne résolvent pas le problème des "shells détachés": shells qui n'ont pas été lancés à partir de VScode, ou qui sont en quelque sorte "déconnectés" du serveur VScode instance associée à l'IDE.

De tels obus peuvent donner des erreurs comme:

Command is only available in WSL or inside a Visual Studio Code terminal.

ou...

Unable to connect to VS Code server. Error in request

Voici un script qui facilite la résolution de ce problème.

J'utilise cela quotidiennement pour connecter des shells dans une tmuxsession avec une instance de serveur VScode spécifique, ou pour réparer un shell intégré qui s'est détaché de son IDE d'hébergement.

#!/bin/bash
# codesrv-connect
#
#  Purpose:
#     Copies the vscode connection environment from one shell to another, so that you can use the
#     vscode integrated terminal's "code [args]" command to communicate with that instance of vscode
#     from an unrelated shell.
#
#  Usage:
#    1.  Open an integrated terminal in vscode, and run codesrv-connect
#    2.  In the target shell, cd to the same directory and run
#       ". .codesrv-connect", or follow the instruction printed by codesrv-connect.
#
#  Setup:
#    Put "codesrv-connect somewhere on your PATH (e.g. ~/bin)"
#
#  Cleanup:
#    - Delete abandoned .codesrv-connect files when their vscode sessions die.
#    - Do not add .codesrv-connect files to git repositories.
#
#  Notes:
#     The VSCODE_IPC_HOOK_CLI environment variable points to a socket which is rather volatile, while the long path for the 'code' alias is more stable: vscode doesn't change the latter even across a "code -r ." reload.  But the former is easily detached and so you need a fresh value if that happens.  This is what codesrv-connect does: it captures the value of these two and writes them to .codesrv-connect in the current dir.
#
#   Verinfo: v1.0.0 - [email protected] - 2020-03-31
#

function errExit {
    echo "ERROR: $@" >&2
    exit 1
}

[[ -S $VSCODE_IPC_HOOK_CLI ]] || errExit "VSCODE_IPC_HOOK_CLI not defined or not a pipe [$VSCODE_IPC_HOOK_CLI]"
if [[ $(which code) != *vscode-server* ]]; then
    errExit "The 'code' command doesn't refer to something under .vscode-server: $(type -a code)"
fi
cat <<EOF >.codesrv-connect
# Temp file created by $(which codesrv-connect): source this into your working shell like '. .codesrv-connect'
# ( git hint: add ".codesrv-connect" to .gitignore )
#
cd "$PWD"
if ! test -S "$VSCODE_IPC_HOOK_CLI"; then
    echo "ERROR: $VSCODE_IPC_HOOK_CLI not a socket. Dead session."
else
    export VSCODE_IPC_HOOK_CLI="$VSCODE_IPC_HOOK_CLI"
    alias code=$(which code)
    echo "Done: the 'code' command will talk to socket \"$VSCODE_IPC_HOOK_CLI\" now."
    echo "You can delete .codesrv-connect when the vscode server context dies, or reuse it in other shells until then."
fi
EOF

echo "# OK: run this to connect to vscode server in a destination shell:"
echo ". $PWD/.codesrv-connect"
Stabledog
la source
0

Si vous avez déjà des CLI "bash", "powershell" et "cmd" et que vous avez des paramètres de chemin d'accès corrects, le basculement d'une CLI à une autre peut se faire par les moyens suivants.

Ctrl+ ': Ouvre la fenêtre du terminal avec CLI par défaut.

bash + enter: passer de votre CLI par défaut / actuelle à la CLI bash .

powershell + enter: basculez de votre CLI par défaut / actuelle vers la CLI powershell .

cmd + enter: basculez de votre CLI par défaut / actuelle vers la CLI cmd .

La version du code VS que j'utilise est 1.45.0

SridharKritha
la source