Как использовать Bash в Windows из встроенного терминала Visual Studio Code?

279

Код Visual Studio в Windows по умолчанию использует PowerShell в качестве встроенного терминала. Если вы хотите использовать Bash из кода Visual Studio, какие шаги следует выполнить?

Махад Валид
источник
Пожалуйста, прочитайте stackoverflow.com/questions/43427631/… чтобы ответить на ваш вопрос.
AKS

Ответы:

347

Вам больше не нужно вводить путь bash.exe вручную. Этот ответ не рекомендуется. Теперь вы можете переключиться на bash напрямую. Просто убедитесь, что у вас установлен git.


Установите Git с https://git-scm.com/download/win .

Затем откройте Visual Studio Code и откройте палитру команд, используя Ctrl+ Shift+ P. Затем введите «Открыть настройки пользователя», а затем выберите «Открыть настройки пользователя» в раскрывающемся меню.

Небо команды Visual Studio Code

Затем откроется эта вкладка с настройками по умолчанию слева и настройками справа:

введите описание изображения здесь

Теперь скопируйте эту строку кода на свою страницу настроек (панель справа) и сохраните - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Примечание: "C:\\Program Files\Git\bin\bash.exe" это путь к bash.exeфайлу из установки Git. Если вы используете оболочку Bash Windows Subsystem для Linux (WSL), путь будет"C:\Windows\System32\bash.exe"

Теперь нажмите Ctrl+, `чтобы открыть терминал из кода Visual Studio. И у тебя будет Баш -

Введите описание изображения здесь

Махад Валид
источник
1
Это цвета по умолчанию из git bash.
Махад Валид
5
Две информации, которые могут быть полезны: убедитесь, что вы избегаете символов обратной косой черты в вашем json, когда пишете путь. Также убедитесь, что вы включили 64-битную версию git bash в свой vscode, поскольку 32-битная версия может не иметь цветов по умолчанию. (Просто удалите часть "(x86)" с пути)
Лайош
2
В дополнение к Lajos, если вы все еще не видите, что терминал открыт, попробуйте перезапустить vscode.
adityah
3
Я столкнулся с проблемой "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe", терминал не открывался. Пробовал "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". Работал отлично для меня.
Дармджит Кумар,
28
К вашему сведению, убедитесь, что вы ссылаетесь bash.exe, а не git-bash.exe. Последний откроет терминал вне кода VS как отдельное окно, а bash.exeбудет работать внутри кода VS.
Дариус
258
  1. Установите Git с https://git-scm.com/download/win

  2. Откройте код Visual Studio и нажмите и удерживайте Ctrl+, `чтобы открыть терминал.

    Введите описание изображения здесь

  3. Откройте палитру команд, используя Ctrl+ Shift+ P.

  4. Тип - Выбрать оболочку по умолчанию

  5. Выберите Git Bash из вариантов

  6. Нажмите на значок + в окне терминала

  7. Новый терминал теперь будет терминалом Git Bash. Дайте несколько секунд, чтобы загрузить Git Bash

    Введите описание изображения здесь

  8. Теперь вы можете переключаться между различными терминалами из раскрывающегося списка терминалов.

    Введите описание изображения здесь

Himanshu
источник
5
Это сработало для меня. Я попробовал все остальные руководства, вручную добавив bash по умолчанию, но он просто каждый раз открывал новое окно терминала. Большое спасибо
Глен
3
это то, что я искал ... это должен более простой принятый ответ
Boopathi T
1
Отлично объяснил .. Спасибо за этот ответ.
Скалария
если ctrl + `не работает (как в случае, ничего не происходит! даже после установки git и установки пользовательских настроек json), попробуйте следующее: ctrl + shift + P> Focus Terminal.
olisteadman
1
Более
простое
80

Обновлено: в более новых версиях кода Visual Studio в выпадающем меню терминала есть команда « Выбрать оболочку по умолчанию» :

Выберите опцию Shell по умолчанию

Помните, что он просто перечисляет оболочки, которые находятся в вашей переменной окружения% PATH%. Для раковин, которые не находятся на вашем пути, смотрите другие ответы.

Дополнительный совет: когда вы запускаете bash, он просто будет выполняться .bashrc, если у вас есть команды инициализации, .bash_profileвы должны скопировать его в .bashrc. Это важно для использования среды Conda в Git Bash.

До версии 1.36 (июнь 2019 г.)

Самый простой способ (по крайней мере, начиная с Visual Studio Code 1.22) - набрать Shift+ Ctrl+, Pчтобы открыть палитру команд, и набрать:

Select Default Shell

Теперь вы можете легко выбрать предпочитаемую оболочку из найденных на вашем пути :

Список выбора оболочки

Для оболочек, которых нет в вашем% PATH%, смотрите другие ответы.

Смотрите полную ссылку на оболочку кода Visual Studio . Там много мясных вещей.

Невиш
источник
1
Это был ответ, который я искал. Я хотел использовать WSL Bash, но другие ответы пытались использовать bash, который идет с git
ахмадали шафи
1
Есть ли способ открыть определенную оболочку ... не делая ее "по умолчанию"? Я думаю, что имеет смысл иметь "открытый" удар только в этот раз ".
Брент Ариас
41

Нажмите и удерживайте Ctrl+, `чтобы открыть терминал. Внутри терминала введите bashGit Bash в терминале. Примечание. Убедитесь, что на вашем компьютере установлен Git Bash.

Если вы хотите снова использовать PowerShell, просто введите powershellтерминал. Чтобы использовать командную строку Windows, введитеcmd в терминале.

Выбранная вами настройка будет использоваться по умолчанию.

Исаак Секаматте
источник
4
это добавляет ценность к выбранному ответу
pjdupreez
1
Чтобы «переключиться обратно на powershell», вероятно, вам нужно exitиз оболочки bash, запущенной внутри оболочки по умолчанию, ввести команду, powershellпоскольку bash не знает, что такое powershell.
Лукас Морган
13

Для меня следующее единственное сочетание, которое работает!

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

С git-bash.exe как ...shell.windows, каждый раз, когда Bash открывался вне Visual Studio !!

Дилип Мутхукуруссимана
источник
1
это действительно помогло мне. Я получил bash, работающий согласно предыдущим ответам выше, но я потерял все псевдонимы bash и git. Это выкупило их. Спасибо.
Дэвид Мартин
1
Это то, что работало со мной: "Terminal.integrated.shell.windows": "C: \\ Program Files \\ Git \\ bin \\ bash.exe", "Terminal.integrated.shellArgs.windows": ["- -login "," -i "]
Белал Мухаммед
Это решение сработало и для меня. Следует добавить, что в моем случае, чтобы уменьшить отставание от gitbash, следуйте этому посту stackoverflow.com/questions/32232978/… и установите новую переменную среды HOME в Windows. Чтобы заставить его работать должным образом в VSCode, приведенный выше ответ работал отлично.
Роб Б
13

Ситуация немного изменилась из-за последних обновлений кода Visual Studio. Следующие шаги работают для меня.

  1. Нажмите Ctrl+ Shift+, Pчтобы открыть окно команд Visual Studio Code.

  2. Введите >preferences: Open Settings (JSON)текстовое поле.

  3. Добавьте следующие строки в конец файла JSON, который отображается в правой панели.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Закройте и снова откройте экземпляр кода Visual Studio.

Аравинда Мевалаараччи
источник
10

Я следовал этому уроку от Пола ДеКарло, чтобы использовать Bash из подсистемы Windows для Linux (WSL) вместо того, что поставляется с Git Bash для Windows. Это те же шаги, что указаны выше в ответе, но вместо этого используйте ниже в ваших пользовательских настройках.

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

Это сработало для меня в первый раз ... что редко для этого материала.

Джей Киллин
источник
1
действительно редко. передовой край
Кристофер Пэйнтер
7

Это, по крайней мере для меня, заставит Visual Studio Code открывать новое окно Bash в качестве внешнего терминала.

Если вы хотите интегрированную среду, вам нужно указать на sh.exeфайл внутриbin папке вашей установки Git.

Так что конфигурация должна сказать C:\\<my-git-install>\\bin\\sh.exe.

Кристер
источник
5

Это зависит от того, установили ли вы Git Bash только для текущего пользователя или для всех пользователей:

Если он установлен на всех пользователях, "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"укажите его в настройках пользователя ( Ctrl+ Comma).

Если он установлен только для текущего пользователя, то "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"укажите в настройках пользователя ( Ctrl+ Comma).

Если методы, перечисленные выше, не работают, вам следует попробовать решение Кристера, которое гласит:

Если вы хотите интегрированную среду, вам нужно указать на sh.exeфайл вbin папке вашей установки Git.

Так что конфигурация должна сказать C:\\<my-git-install>\\bin\\sh.exe.

Примечание: sh.exe и bash.exe кажутся мне абсолютно одинаковыми. Там не должно быть никакой разницы между ними.

Shaurya
источник
4

Добавьте Git\binкаталог в Pathпеременную среды. Каталог %ProgramFiles%\Git\binпо умолчанию. Таким образом, вы можете получить доступ к Git Bash, просто набрав bash на каждом терминале, включая встроенный терминал кода Visual Studio.

Как установить переменные пути и среды в Windows

emirhanaydin
источник
4

Я уже настроил множество condaсред WSL(Bash для Ubuntu в Windows), поэтому я хотел использовать ту же установку Bash в Visual Studio Code.

Чтобы сделать это, я просто должен был указать путь к этому конкретному Башу исполняемого ( вместо изGit-Bash ) о настройках Visual Studio Кодекса:

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


PS : чтобы убедиться, что на вашем компьютере с Windows установлен исполняемый файл Ubuntu на Bash, откройте Command prompt(search:) cmdи запустите:

where bash.exe

dvitsios
источник
4

Этот ответ похож на ответ с наибольшим количеством голосов, но с важным отличием: многие предыдущие ответы на этот вопрос посвящены запуску Git Bash, в то время как мой ответ посвящен запуску WSL Bash .

  1. Включите подсистему Windows для Linux на компьютере с Windows 10.

  2. Откройте код Visual Studio и нажмите и удерживайте, Ctrl + `чтобы открыть терминал.

  3. Откройте командную палитру, используя Ctrl + Shift + P.

  4. Тип - Select Default Shell.

  5. Выберите WSL Bash(НЕ Git Bash) из вариантов.

введите описание изображения здесь

  1. Нажмите на +значок в окне терминала. Новый терминал теперь будет терминалом WSL Bash!
therobinkim
источник
4

Последний код VS:

  • если вы не видите файл settings.json, перейдите в меню Файл -> Настройки -> Настройки (или нажмите на Ctrl+,)
  • Появятся настройки, см. Две вкладки «Пользователь» (выбран по умолчанию) и «Рабочая область». Зайдите в Пользователь -> Возможности -> Терминал
  • Появится раздел терминала, см. Ссылку edit in settings.json. Нажмите и добавьте"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Сохраните и перезапустите VS код.

Bash терминал отразится на терминале.

Rijo
источник
1

Я консультируюсь с компанией из списка Fortune 500, и это, к сожалению, Windows 7 и никаких привилегий администратора. Таким образом, Node.js, Npm, Visual Studio Code и т. Д. Были отправлены на мою машину - я не могу многое изменить и т. Д ...

Для этого компьютера под управлением Windows 7:

Ниже приведены мои новые настройки. Тот, кто не работает, закомментирован.

{
    "update.channel": "none",
    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
    //"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
}
Том Стиккель
источник
0

Я попробовал вышеуказанные ответы, начиная с vscode 1.42.1, и они работали так, чтобы получить терминал git bash. Итак, нижняя строка этого параметра работает только для открытия оболочки bash из терминала:

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

Однако он имеет нежелательный побочный эффект, будучи также оболочкой, используемой для создания объектов, и это разрывает цепочку MS C ++, потому что \символ, используемый для разделителя пути, понимается bash как escape-символ. Затем полное исправление потребовало от меня добавить эту дополнительную переменную, установив ее в powershell:

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

Теперь я могу иметь свой bash терминал и / Ctrl-Shift-Bили F5работать без проблем.

Да, и, как упоминалось в других постерах, источником этой информации является документация VSCode .

Coffee_fan
источник
0

Как насчет отдельных или несвязанных оболочек и code [args]опор?

В то время как другие ответы говорят о том, как настроить и использовать поддержку WSCL- bashтерминала, интегрированного с VScode , они не решают проблему «отдельных оболочек»: оболочек, которые не были запущены из VScode или которые каким-то образом «отключаются» от сервера VScode Экземпляр, связанный с IDE.

Такие оболочки могут давать ошибки, такие как:

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

или...

Unable to connect to VS Code server. Error in request

Вот скрипт который позволяет легко решить эту проблему.

Я использую это ежедневно для соединения оболочек в tmuxсеансе с конкретным экземпляром сервера VScode или для исправления встроенной оболочки, которая отсоединяется от IDE хостинга.

#!/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"
Stabledog
источник
0

Если у вас уже есть CLI "bash", "powershell" и "cmd" , и у вас есть правильные настройки пути, то переключение с одного CLI на другой можно выполнить следующими способами.

Ctrl+ ': Открывает окно терминала с CLI по умолчанию.

bash + enter: переключение с вашего текущего / текущего CLI на bash CLI.

powershell + enter: переключение с используемого по умолчанию / текущего CLI на powershell CLI.

cmd + enter: переключение с вашего текущего / текущего CLI на cmd CLI.

Версия кода VS я использую 1.45.0

SridharKritha
источник