Jak korzystać z Bash w systemie Windows ze zintegrowanego terminala Visual Studio Code?


Odpowiedzi:


347

Nie musisz już ręcznie wpisywać ścieżki bash.exe. Ta odpowiedź jest nieaktualna. Teraz możesz przejść bezpośrednio na bash. Tylko upewnij się, że masz zainstalowany git.


Zainstaluj Git z https://git-scm.com/download/win .

Następnie otwórz program Visual Studio Code i otwórz paletę poleceń za pomocą Ctrl+ Shift+ P. Następnie wpisz „otwórz ustawienia użytkownika”, a następnie wybierz „Otwórz ustawienia użytkownika” z menu rozwijanego.

Podniebienie poleceń programu Visual Studio Code

Następnie otworzy się ta karta z ustawieniami domyślnymi po lewej stronie i ustawieniami po prawej:

wprowadź opis zdjęcia tutaj

Teraz skopiuj ten wiersz kodu na własną stronę ustawień (panel po prawej stronie) i zapisz - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Uwaga: "C:\\Program Files\Git\bin\bash.exe" jest ścieżką, w której bash.exeznajduje się plik z instalacji Git. Jeśli używasz powłoki Bash systemu Windows Subsystem for Linux (WSL), ścieżka będzie wyglądać następująco"C:\Windows\System32\bash.exe"

Teraz naciśnij Ctrl+, `aby otworzyć terminal z Visual Studio Code. I będziesz miał Bash -

Wpisz opis zdjęcia tutaj


1
To są domyślne kolory z git bash.
Mahade Walid

5
Dwa informacje, które mogą być pomocne: upewnij się, że podczas pisania ścieżki unikniesz znaków odwrotnego ukośnika. Upewnij się także, że dołączasz 64-bitową wersję git bash do swojego vscode, ponieważ wersja 32-bitowa może domyślnie nie mieć kolorów. (Wystarczy usunąć część „(x86)” ze ścieżki)
Lajos Meszaros

2
Dodając do Lajos, jeśli nadal nie widzisz terminala otwartego, spróbuj zrestartować vscode.
adityah

3
Miałem problem z "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe"terminalem, który się nie otwierał. Próbowałem "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". Działa dla mnie idealnie.
Dharmjeet Kumar,

28
Do Twojej wiadomości, upewnij się, że link do bash.exe, a nie git-bash.exe. Ten ostatni otworzy terminal poza kodem VS jako osobne okno, podczas gdy bash.exebędzie działał wewnątrz kodu VS.
Dariusz

258
  1. Zainstaluj Git z https://git-scm.com/download/win

  2. Otwórz Visual Studio Code i naciśnij i przytrzymaj Ctrl+, `aby otworzyć terminal.

    Wpisz opis zdjęcia tutaj

  3. Otwórz paletę poleceń za pomocą Ctrl+ Shift+ P.

  4. Typ - wybierz Domyślna powłoka

  5. Wybierz Git Bash z opcji

  6. Kliknij ikonę + w oknie terminala

  7. Nowy terminal będzie teraz terminalem Git Bash. Daj mu kilka sekund na załadowanie Git Bash

    Wpisz opis zdjęcia tutaj

  8. Możesz teraz przełączać się między różnymi terminalami również z menu rozwijanego w terminalu.

    Wpisz opis zdjęcia tutaj


5
To zadziałało dla mnie. Wypróbowałem wszystkie pozostałe przewodniki, ręcznie dodając domyślną wersję bash, ale za każdym razem otwierało się nowe okno terminala. Wielkie dzięki
Glen

3
tego właśnie szukałem ... to powinna być prostsza zaakceptowana odpowiedź
Boopathi T

1
Doskonale wyjaśnione .. Dziękuję za tę odpowiedź.
SKalariya,

jeśli ctrl + `nie działa (jak w, nic się nie dzieje! nawet po zainstalowaniu git i ustawieniu ustawień użytkownika json), spróbuj tego: ctrl + shift + P> Focus Terminal.
olisteadman

1
Prostsze i szybsze rozwiązanie
Themelis

80

Zaktualizowano: nowsze wersje programu Visual Studio Code mają polecenie Wybierz domyślną powłokę w menu rozwijanym terminala:

Wybierz opcję Domyślna powłoka

Pamiętaj, że po prostu wyświetla listę powłok znajdujących się w zmiennej środowiskowej% PATH%. W przypadku muszli, które nie są na twojej drodze, zobacz inne odpowiedzi.

Dodatkowa wskazówka: po uruchomieniu bash po prostu się uruchomi .bashrc, jeśli masz w nim polecenia inicjalizujące .bash_profile, musisz go skopiować .bashrc. Jest to niezbędne do używania środowiska Conda w Git Bash.

Przed wersją 1.36 (czerwiec 2019 r.)

Najłatwiejszym sposobem (przynajmniej od wersji Visual Studio Code 1.22) jest wpisanie Shift+ Ctrl+, Paby otworzyć paletę poleceń i wpisać:

Select Default Shell

Teraz możesz łatwo wybrać preferowaną powłokę spośród tych znalezionych na twojej ścieżce :

Lista wyboru powłok

W przypadku powłok, których nie ma w% PATH%, zobacz inne odpowiedzi.

Zobacz pełne odniesienie do powłoki Visual Studio Code . Jest dużo mięsnych rzeczy.


1
To była odpowiedź, której szukałem. Chciałem użyć WSL Bash, ale inne odpowiedzi próbowały użyć bash, który pochodzi z git
ahmadali shafiee

1
Czy istnieje sposób na otwarcie określonej powłoki ... bez ustawiania jej jako „domyślnej”? Wydaje mi się, że sensowne jest „otwarte” uderzenie tylko raz.
Brent Arias,

41

Naciśnij i przytrzymaj Ctrl+, `aby otworzyć terminal. Wewnątrz terminala wpisz, bashaby użyć Git Bash w terminalu. Uwaga: Upewnij się, że masz zainstalowany Git Bash na swoim komputerze.

Jeśli chcesz ponownie użyć programu PowerShell, po prostu wpisz powershellterminal. Aby użyć wiersza polecenia systemu Windows, wpisz cmdterminal.

Wybrane ustawienie zostanie użyte jako domyślne.


4
dodaje to większej wartości wybranej odpowiedzi
pjdupreez

1
Aby „wrócić do PowerShell”, prawdopodobnie musisz to zrobić exitz poziomu powłoki bash działającej wewnątrz domyślnej powłoki, a następnie wpisz, powershellponieważ bash nie wie, co to jest PowerShell.
Lucas Morgan

13

Dla mnie poniżej jest jedyna kombinacja, która działa!

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

Z git-bash.exe jako za ...shell.windowskażdym razem, gdy Bash otwierał się poza Visual Studio !!


1
to naprawdę mi pomogło. Dostałem bash zgodnie z poprzednimi odpowiedziami powyżej, ale straciłem wszystkie moje bash i aliasy git. To ich odkupiło. Dzięki.
David Martin

1
To właśnie ze mną działało: „terminal.integrated.shell.windows”: „C: \\ Program Files \\ Git \\ bin \\ bash.exe”, „terminal.integrated.shellArgs.windows”: [”- -login "," -i "]
Belal Mohammed

To rozwiązanie również działało dla mnie. Zastrzeżeniem do dodania jest to, że w moim przypadku, aby zmniejszyć opóźnienie za pomocą gitbash, postępowałem zgodnie z tym postem stackoverflow.com/questions/32232978/... i ustawiłem nową zmienną środowiskową HOME w Windows. Aby poprawnie działać w VSCode, powyższa odpowiedź działała idealnie.
Rob B

13

Wszystko zostało nieco zmienione z powodu najnowszych aktualizacji Visual Studio Code. Poniższe kroki działają dla mnie.

  1. Naciśnij Ctrl+Shift +, Paby otworzyć podniebienie polecenia Visual Studio Code.

  2. Rodzaj >preferences: Open Settings (JSON) w polu tekstowym.

  3. Dodaj następujące wiersze na końcu pliku JSON, który jest wyświetlany w panelu po prawej stronie.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Zamknij i ponownie otwórz instancję programu Visual Studio Code.


10

Wykonałem ten samouczek od Paula DeCarlo, aby użyć Bash z podsystemu Windows dla systemu Linux (WSL) zamiast tego, co jest dostarczane z Git Bash dla systemu Windows. Są to te same kroki, co powyżej w odpowiedzi, ale zamiast tego użyj poniżej w Ustawieniach użytkownika.

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

To zadziałało dla mnie po raz pierwszy ... co jest rzadkością dla tych rzeczy.


1
naprawdę rzadkie. najnowocześniejszy
Christopher Painter

7

To, przynajmniej dla mnie, sprawi, że Visual Studio Code otworzy nowe okno Bash jako terminal zewnętrzny.

Jeśli chcesz zintegrowane środowisko, musisz wskazać sh.exeplik w binfolderze instalacji Git.

Tak więc konfiguracja powinna powiedzieć C:\\<my-git-install>\\bin\\sh.exe.


5

Zależy to od tego, czy zainstalowałeś Git Bash tylko dla bieżącego użytkownika czy wszystkich użytkowników:

Jeśli jest zainstalowany na wszystkich użytkownikach, wprowadź "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"ustawienia użytkownika ( Ctrl+ Comma).

Jeśli jest zainstalowany tylko na bieżącym użytkowniku, wprowadź "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"ustawienia użytkownika ( Ctrl+ Comma).

Jeśli powyższe metody nie działają, powinieneś wypróbować rozwiązanie Christera, które mówi:

Jeśli chcesz zintegrowane środowisko, musisz wskazać sh.exeplik w binfolderze instalacji Git.

Tak więc konfiguracja powinna powiedzieć C:\\<my-git-install>\\bin\\sh.exe.

Uwaga: sh.exe i bash.exe wydają mi się całkowicie takie same. Nie powinno być między nimi żadnej różnicy.



4

Już skonfigurowałem wiele condaśrodowisk WSL(Bash na Ubuntu w systemie Windows), więc chciałem użyć tej samej instalacji Bash na Visual Studio Code.

Aby to zrobić, musiałem jedynie określić ścieżkę do tego konkretnego pliku wykonywalnego Bash ( zamiast zGit-Bash ) o ustawieniach kodu Visual Studio:

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


PS : aby upewnić się, gdzie na komputerze z systemem Windows jest zainstalowany plik wykonywalny Ubuntu on Bash, otwórz Command prompt(szukaj:cmd :) i uruchom:

where bash.exe


4

Ta odpowiedź jest podobna do najczęściej głosowanej odpowiedzi, ale z ważnym rozróżnieniem: wiele poprzednich odpowiedzi na to pytanie koncentruje się na uruchomieniu Git Bash, podczas gdy moja odpowiedź koncentruje się na uruchomieniu WSL Bash .

  1. Włącz podsystem Windows dla systemu Linux na komputerze z systemem Windows 10.

  2. Otwórz Visual Studio Code i naciśnij i przytrzymaj, Ctrl + `aby otworzyć terminal.

  3. Otwórz paletę poleceń za pomocą Ctrl + Shift + P.

  4. Wpisz - Select Default Shell.

  5. Wybierz WSL Bash(NIE Git Bash) z opcji.

wprowadź opis zdjęcia tutaj

  1. Kliknij +ikonę w oknie terminala. Nowy terminal będzie teraz terminalem WSL Bash!

4

Najnowszy kod VS:

  • jeśli nie widzisz pliku settings.json, przejdź do menu Plik -> Preferencje -> Ustawienia (lub naciśnij Ctrl+, )
  • Pojawią się ustawienia, zobacz dwie zakładki Użytkownik (domyślnie wybrane) i Obszar roboczy. Przejdź do Użytkownik -> Funkcje -> Terminal
  • Pojawia się sekcja terminala, patrz link edit in settings.json. Kliknij i dodaj"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Zapisz i uruchom ponownie kod VS.

Terminal Bash będzie odzwierciedlał terminal.


1

Tak się składa, że ​​konsultuję się z firmą z listy Fortune 500 i to niestety Windows 7 i brak uprawnień administratora. W ten sposób Node.js, Npm, Visual Studio Code itp. Zostały wypchnięte na moją maszynę - nie mogę wiele zmienić itp.

Dla tego komputera z systemem Windows 7:

Poniżej znajdują się moje nowe ustawienia. Ten, który nie działa, został skomentowany.

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

0

Próbowałem powyższych odpowiedzi od vscode 1.42.1 i działały one tak, że dały mi terminal git bash. Podsumowując, to ustawienie działa tylko do otwierania powłoki bash z terminala:

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

Ma jednak niepożądany efekt uboczny, ponieważ jest również powłoką używaną do budowania różnych rzeczy i przerywa łańcuch MS C ++, ponieważ \znak użyty do separatora ścieżek jest rozumiany przez bash jako znak ucieczki. Pełna poprawka dla mnie wymagała wtedy dodania tej dodatkowej zmiennej, ustawiając ją na PowerShell:

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

Teraz mogę mieć mój terminal bash i Ctrl-Shift-BlubF5 pracować bez problemów.

Aha, i jak wspomniano w innych plakatach, źródłem tych informacji jest dokumentacja VSCode .


0

Co z odłączonymi lub niepowiązanymi powłokami i code [args]wsparciem?

Podczas gdy inne odpowiedzi mówią o tym, jak skonfigurować i używać zintegrowanego WSL VScode bash obsługi terminalu , nie rozwiązują one problemu „odłączonych powłok”: powłok, które nie zostały uruchomione z VScode lub które zostały „odłączone” od serwera VScode instancja powiązana z IDE.

Takie powłoki mogą powodować błędy, takie jak:

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

lub...

Unable to connect to VS Code server. Error in request

Oto skrypt który ułatwia rozwiązanie tego problemu.

Używam tego codziennie do łączenia powłok w tmuxsesji z konkretną instancją serwera VScode lub do naprawy zintegrowanej powłoki, która została odłączona od swojego IDE hosta.

#!/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 - les.matheson@gmail.com - 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"

0

Jeśli masz już interfejs CLI „bash”, „powershell” i „cmd” i masz prawidłowe ustawienia ścieżki, przełączanie z jednego interfejsu CLI na inny można wykonać w następujący sposób.

Ctrl+ ': Otwiera okno terminala z domyślnym interfejsem CLI.

bash + enter: Przełącz z domyślnego / bieżącego interfejsu CLI na bash interfejs CLI.

powershell + enter: Przełącz z domyślnego / bieżącego interfejsu CLI na PowerShell CLI.

cmd + enter: Przełącz z domyślnego / bieżącego CLI na cmd CLI.

Wersja kodu VS, której używam, to 1.45.0

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.