Wie verwende ich Bash unter Windows über das integrierte Terminal von Visual Studio Code?

Antworten:

347

Sie müssen den Pfad bash.exe nicht mehr manuell eingeben. Diese Antwort ist veraltet. Jetzt können Sie direkt zu Bash wechseln. Stellen Sie einfach sicher, dass Sie Git installiert haben.


Installieren Sie Git von https://git-scm.com/download/win .

Öffnen Sie dann Visual Studio Code und öffnen Sie die Befehlspalette mit Ctrl+ Shift+ P. Geben Sie dann "Benutzereinstellung öffnen" ein und wählen Sie dann "Benutzereinstellungen öffnen" aus dem Dropdown-Menü.

Gaumen des Visual Studio Code-Befehls

Dann wird diese Registerkarte mit den Standardeinstellungen links und Ihren Einstellungen rechts geöffnet:

Geben Sie hier die Bildbeschreibung ein

Kopieren Sie nun diese Codezeile auf Ihre eigene Einstellungsseite (das Fenster auf der rechten Seite) und speichern Sie - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Hinweis: "C:\\Program Files\Git\bin\bash.exe" ist der Pfad, in dem sich die bash.exeDatei aus der Git-Installation befindet. Wenn Sie die Bash-Shell für Windows Subsystem für Linux (WSL) verwenden, lautet der Pfad"C:\Windows\System32\bash.exe"

Drücken Sie nun Ctrl+ `, um das Terminal über Visual Studio Code zu öffnen. Und du wirst Bash haben -

Geben Sie hier die Bildbeschreibung ein

Mahade Walid
quelle
1
Dies sind Standardfarben von Git Bash.
Mahade Walid
5
Zwei Infos, die hilfreich sein könnten: Stellen Sie sicher, dass Sie beim Schreiben des Pfads keine Backslash-Zeichen in Ihrem JSON verwenden. Stellen Sie außerdem sicher, dass Sie die 64-Bit-Version von git bash in Ihren vscode aufnehmen, da die 32-Bit-Version möglicherweise nicht standardmäßig die Farben enthält. (Entfernen Sie einfach den Teil "(x86)" vom Pfad)
Lajos Meszaros
2
Wenn Sie Lajos hinzufügen und das Terminal immer noch nicht geöffnet sehen, starten Sie vscode neu.
Adityah
3
Ich hatte Probleme mit "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe", das Terminal wurde nicht geöffnet. Versucht "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". Hat perfekt für mich funktioniert.
Dharmjeet Kumar
28
Zu Ihrer Information, stellen Sie sicher, dass Sie auf bash.exeund nicht verlinken git-bash.exe. Letzteres öffnet ein Terminal außerhalb des VS-Codes als separates Fenster, während bash.exees innerhalb des VS-Codes ausgeführt wird.
Darius
257
  1. Installieren Sie Git von https://git-scm.com/download/win

  2. Öffnen Sie Visual Studio Code und halten Sie Ctrl+ gedrückt `, um das Terminal zu öffnen.

    Geben Sie hier die Bildbeschreibung ein

  3. Öffnen Sie die Befehlspalette mit Ctrl+ Shift+ P.

  4. Typ - Wählen Sie Standard-Shell

  5. Wählen Sie Git Bash aus den Optionen

  6. Klicken Sie im Terminalfenster auf das Symbol +

  7. Das neue Terminal wird nun ein Git Bash-Terminal sein. Nehmen Sie sich ein paar Sekunden Zeit, um Git Bash zu laden

    Geben Sie hier die Bildbeschreibung ein

  8. Sie können jetzt auch über die Dropdown-Liste im Terminal zwischen den verschiedenen Terminals wechseln.

    Geben Sie hier die Bildbeschreibung ein

Himanshu
quelle
5
Das hat bei mir funktioniert. Ich habe alle anderen Anleitungen durch manuelles Hinzufügen der Standard-Bash ausprobiert, aber jedes Mal wurde ein neues Terminalfenster geöffnet. Vielen Dank
Glen
3
das ist, wonach ich gesucht habe ... das sollte die einfachere akzeptierte Antwort sein
Boopathi T
1
Perfekt erklärt .. Danke für diese Antwort.
SKalariya
Wenn Strg + `nicht funktioniert (wie in, passiert nichts! Auch nachdem git installiert und die Benutzereinstellungen json festgelegt wurden), versuchen Sie Folgendes: Strg + Umschalt + P> Fokus-Terminal.
Olisteadman
1
Einfachere und schnellere Lösung
Themelis
80

Aktualisiert: Neuere Versionen von Visual Studio Code verfügen über den Befehl Standard-Shell auswählen im Pulldown-Menü des Terminals:

Wählen Sie die Option Standard-Shell

Denken Sie daran, dass nur die Shells aufgelistet werden, die sich in Ihrer Umgebungsvariablen% PATH% befinden. Weitere Informationen zu Muscheln, die sich nicht in Ihrem Weg befinden, finden Sie in anderen Antworten.

Zusätzlicher Tipp: Wenn Sie bash starten, wird es nur ausgeführt .bashrc. Wenn Sie Initialisierungsbefehle enthalten .bash_profile, müssen Sie es kopieren .bashrc. Es ist wichtig für die Verwendung von Conda-Umgebungen in Git Bash.

Vor Version 1.36 (Juni 2019)

Der einfachste Weg (zumindest ab Visual Studio Code 1.22) besteht darin, Shift+ Ctrl+ einzugebenP , um die Befehlspalette zu öffnen, und Folgendes einzugeben :

Select Default Shell

Jetzt können Sie ganz einfach Ihre bevorzugte Shell zwischen den in Ihrem Pfad gefundenen auswählen :

Shell-Auswahlliste

Informationen zu Muscheln, die nicht in% PATH% enthalten sind, finden Sie in den anderen Antworten.

Siehe die vollständige Visual Studio Code-Shell-Referenz . Es gibt viele fleischige Sachen.

neves
quelle
1
Dies war die Antwort, nach der ich gesucht habe. Ich wollte WSL Bash verwenden, aber die anderen Antworten versuchten, die Bash zu verwenden, die mit git
ahmadali shafiee am
1
Gibt es eine Möglichkeit, eine bestimmte Shell zu öffnen ... ohne sie zum "Standard" zu machen? Ich denke, es ist sinnvoll, nur dieses eine Mal eine "offene" Bash zu veranstalten. "
Brent Arias
41

Halten Sie Ctrl+ gedrückt `, um das Terminal zu öffnen. Geben Sie im Terminal ein, bashum Git Bash im Terminal zu verwenden. Hinweis: Stellen Sie sicher, dass Git Bash auf Ihrem Computer installiert ist.

Wenn Sie PowerShell erneut verwenden möchten, geben Sie einfach powershelldas Terminal ein. Geben Sie cmddas Terminal ein, um die Windows-Befehlszeile zu verwenden .

Die von Ihnen gewählte Einstellung wird als Standardeinstellung verwendet.

Isaac Sekamatte
quelle
4
Dies
erhöht den
1
Um "zurück zu Powershell zu wechseln", müssen Sie wahrscheinlich exitvon Ihrer Bash-Shell, die in der Standard-Shell ausgeführt wird, powershellFolgendes eingeben , da bash nicht weiß, was Powershell ist.
Lucas Morgan
13

Für mich ist das Folgende die einzige Kombination, die funktioniert!

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

Mit git-bash.exe als ...shell.windows, jedes Mal, wenn Bash außerhalb von Visual Studio geöffnet wurde !!

Dilip Muthukurussimana
quelle
1
das hat mir wirklich geholfen. Ich habe Bash gemäß den vorherigen Antworten zum Laufen gebracht, aber ich habe alle meine Bash- und Git-Aliase verloren. Dies kaufte sie zurück. Vielen Dank.
David Martin
1
Dies hat bei mir funktioniert: "terminal.integrated.shell.windows": "C: \\ Programme \\ Git \\ bin \\ bash.exe", "terminal.integrated.shellArgs.windows": ["- -login "," -i "]
Belal Mohammed
Diese Lösung hat auch bei mir funktioniert. Eine Einschränkung, die hinzugefügt werden muss, ist, dass in meinem Fall, um die Verzögerung mit gitbash zu verringern, diesem Beitrag stackoverflow.com/questions/32232978/… gefolgt wurde und eine neue HOME-Umgebungsvariable in Windows festgelegt wurde. Damit es in VSCode richtig funktioniert, hat die obige Antwort perfekt funktioniert.
Rob B
13

Die Dinge wurden aufgrund der neuesten Updates für Visual Studio Code ein wenig geändert. Die folgenden Schritte funktionieren für mich.

  1. Drücken Sie Ctrl+ Shift+ P, um den Visual Studio Code-Befehlsbereich zu öffnen.

  2. Geben Sie >preferences: Open Settings (JSON)den Textbereich ein.

  3. Fügen Sie am Ende der JSON-Datei, die in Ihrem rechten Bereich angezeigt wird, die folgenden Zeilen hinzu.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Schließen Sie Ihre Visual Studio Code-Instanz und öffnen Sie sie erneut.

Aravinda Meewalaarachchi
quelle
10

Ich habe dieses Tutorial von Paul DeCarlo befolgt , um den Bash aus dem Windows-Subsystem für Linux (WSL) anstelle von Git Bash für Windows zu verwenden. Dies sind die gleichen Schritte wie oben in der Antwort, aber verwenden Sie stattdessen die folgenden Schritte in Ihren Benutzereinstellungen.

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

Das hat bei mir zum ersten Mal funktioniert ... was für dieses Zeug selten ist.

Jay Killeen
quelle
1
in der Tat selten. Schneide
Christopher Painter
7

Dies führt zumindest für mich dazu, dass Visual Studio Code ein neues Bash-Fenster als externes Terminal öffnet.

Wenn Sie die integrierte Umgebung möchten, müssen Sie auf die sh.exeDatei im binOrdner Ihrer Git-Installation verweisen .

Also sollte die Konfiguration sagen C:\\<my-git-install>\\bin\\sh.exe.

Christer
quelle
5

Dies hängt davon ab, ob Sie Git Bash nur im aktuellen Benutzer oder in allen Benutzern installiert haben:

Wenn es auf allen Benutzern installiert ist, geben Sie "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"Ihre Benutzereinstellungen ( Ctrl+ Comma) ein.

Wenn es nur auf dem aktuellen Benutzer installiert ist, geben Sie "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"Ihre Benutzereinstellungen ( Ctrl+ Comma) ein.

Wenn die oben aufgeführten Methoden nicht funktionieren, sollten Sie die Lösung von Christer ausprobieren , die besagt:

Wenn Sie die integrierte Umgebung möchten, müssen Sie auf die sh.exeDatei im binOrdner Ihrer Git-Installation verweisen .

Also sollte die Konfiguration sagen C:\\<my-git-install>\\bin\\sh.exe.

Hinweis: Die Dateien sh.exe und bash.exe erscheinen mir völlig gleich. Es sollte keinen Unterschied zwischen ihnen geben.

Shaurya
quelle
4

Fügen Sie das Git\binVerzeichnis der PathUmgebungsvariablen hinzu. Das Verzeichnis ist %ProgramFiles%\Git\binstandardmäßig. Auf diese Weise können Sie auf Git Bash zugreifen, indem Sie einfach bashjedes Terminal einschließlich des integrierten Terminals von Visual Studio Code eingeben .

So legen Sie den Pfad und die Umgebungsvariablen in Windows fest

Emirhanaydin
quelle
4

Ich hatte bereits viele condaUmgebungen unter WSL(Bash unter Ubuntu unter Windows) eingerichtet, daher wollte ich dieselbe Bash-Installation unter Visual Studio Code verwenden.

Dazu musste ich nur den Pfad dieser bestimmten ausführbaren Bash-Datei ( anstelle derGit-Bash ) in den Einstellungen von Visual Studio Code angeben :

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


PS : Um sicherzustellen, dass Ihre ausführbare Ubuntu on Bash-Datei auf Ihrem Windows-Computer installiert ist, öffnen Sie die Command prompt(Suche :) cmdund führen Sie Folgendes aus:

where bash.exe

dvitsios
quelle
4

Diese Antwort ähnelt der Antwort mit der höchsten Bewertung, weist jedoch einen wichtigen Unterschied auf: Viele der vorherigen Antworten auf diese Frage konzentrieren sich auf das Ausführen von Git Bash, während sich meine Antwort auf das Ausführen von WSL Bash konzentriert .

  1. Aktivieren Sie das Windows-Subsystem für Linux auf Ihrem Windows 10-Computer.

  2. Öffnen Sie Visual Studio Code und halten Sie gedrückt Ctrl + `, um das Terminal zu öffnen.

  3. Öffnen Sie die Befehlspalette mit Ctrl + Shift + P.

  4. Typ - Select Default Shell.

  5. Wählen Sie WSL Bash(NICHT Git Bash) aus den Optionen.

Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie auf das +Symbol im Terminalfenster. Das neue Terminal wird jetzt ein WSL Bash Terminal sein!
Therobinkim
quelle
4

Letzter VS-Code:

  • Wenn Sie die Datei settings.json nicht sehen können, gehen Sie zum Menü Datei -> Einstellungen -> Einstellungen (oder drücken Sie auf Ctrl+,).
  • Die Einstellungen werden angezeigt, siehe zwei Registerkarten Benutzer (standardmäßig ausgewählt) und Arbeitsbereich. Gehen Sie zu Benutzer -> Funktionen -> Terminal
  • Terminalabschnitt erscheint, siehe Link edit in settings.json. Klicken und hinzufügen"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Speichern und starten Sie den VS-Code neu.

Das Bash-Terminal wird auf dem Terminal angezeigt.

Rijo
quelle
1

Ich berate gerade für ein Fortune 500- Unternehmen und es ist leider Windows 7 und keine Administratorrechte. So wurden Node.js, Npm, Visual Studio Code usw. auf meinen Computer übertragen - ich kann nicht viel ändern usw.

Für diesen Computer unter Windows 7:

Unten sind meine neuen Einstellungen. Derjenige, der nicht funktioniert, ist auskommentiert.

{
    "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
quelle
0

Ich habe die obigen Antworten ab vscode 1.42.1 ausprobiert und sie haben funktioniert, um mir ein Git-Bash-Terminal zu verschaffen. Unterm Strich funktioniert diese Einstellung also nur zum Öffnen einer Bash-Shell vom Terminal aus:

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

Es hat jedoch den unerwünschten Nebeneffekt, dass es auch die Shell ist, die zum Erstellen von Dingen verwendet wird, und dass die MS C ++ - Kette unterbrochen wird, da das \für das Pfadtrennzeichen verwendete Zeichen von bash als Escape-Zeichen verstanden wird. Für die vollständige Korrektur musste ich diese zusätzliche Variable hinzufügen und auf Powershell setzen:

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

Jetzt kann ich mein Bash-Terminal haben und / Ctrl-Shift-Boder F5ohne Probleme arbeiten.

Oh, und wie andere Poster bereits erwähnt haben, ist die Quelle für diese Informationen die Dokumentation von VSCode .

Coffee_fan
quelle
0

Was ist mit abgetrennten oder nicht verwandten Muscheln und code [args]Unterstützung?

Während andere Antworten über die Konfiguration und Verwendung der VScode-integrierten WSL- bashTerminalunterstützung sprechen , lösen sie nicht das Problem der "getrennten Shells": Shells, die nicht innerhalb von VScode gestartet wurden oder die irgendwie vom VScode-Server "getrennt" werden Instanz, die der IDE zugeordnet ist.

Solche Schalen können Fehler verursachen wie:

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

oder...

Unable to connect to VS Code server. Error in request

Hier ist ein Skript, mit dem Sie dieses Problem leicht lösen können.

Ich verwende dies täglich, um Shells in einer tmuxSitzung mit einer bestimmten VScode-Serverinstanz zu verbinden oder um eine integrierte Shell zu reparieren, die sich von ihrer Hosting-IDE gelöst hat.

#!/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"
Stallhund
quelle
0

Wenn Sie bereits „bash“, „Powershell“ und „cmd“ CLI und korrekten Pfad Einstellungen haben dann von einem CLI Wechsel zu einem anderen durch die folgenden Arten erfolgen kann.

Ctrl+ ': Öffnet das Terminalfenster mit der Standard-CLI.

bash + enter: Wechseln Sie von Ihrer Standard- / aktuellen CLI zu bash CLI.

Powershell + enter: Wechseln Sie von Ihrer Standard- / aktuellen CLI zu Powershell- CLI.

cmd + enter: Wechseln Sie von Ihrer Standard- / aktuellen CLI zur cmd- CLI.

Die von mir verwendete VS-Codeversion ist 1.45.0

SridharKritha
quelle