Visual Studio Code в Windows по умолчанию использует PowerShell в качестве интегрированного терминала. Если вы хотите использовать Bash из Visual Studio Code, какие шаги необходимо выполнить?
Как использовать Bash в Windows из интегрированного терминала Visual Studio Code?
Ответы (22)
Установите Git из https://git-scm.com/download/win.
Откройте код Visual Studio и нажмите и удерживайте Ctrl + `, чтобы открыть терминал.
Откройте палитру команд, используя Ctrl + Shift + P.
Тип - выберите профиль по умолчанию
Выберите Git Bash из вариантов
Щелкните значок + в окне терминала.
Новый терминал теперь будет терминалом Git Bash. Подождите несколько секунд, чтобы загрузить Git Bash
Теперь вы также можете переключаться между различными терминалами из раскрывающегося списка терминала.
.bash_profile
вместо .bashrc
, bash.exe
не будет проверять сценарий профиля. Вам нужно перейти в настройки JSON и вручную задать список аргументов следующим образом "terminal.integrated.shellArgs.windows": ["--rcfile", "C:\\Users\\User\\.bash_profile"]
- person Geo Angelopoulos; 08.04.2019
Вам больше не нужно вводить путь bash.exe вручную. Этот ответ устарел. Теперь вы можете напрямую переключиться на bash, если у вас установлен git по умолчанию. Если вы установили git по другому пути, вам нужно использовать решение ниже.
Установите Git из https://git-scm.com/download/win.
Затем откройте код Visual Studio и откройте палитру команд, используя Ctrl + Shift + P. Затем введите открытые настройки пользователя, а затем выберите «Открыть настройки пользователя» в раскрывающемся меню.
Затем откроется эта вкладка с настройками по умолчанию слева и вашими настройками справа:
Теперь скопируйте эту строку кода на свою страницу настроек (панель справа) и сохраните - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
Примечание. "C:\\Program Files\Git\bin\bash.exe"
- это путь, по которому находится bash.exe
файл из установки Git. Если вы используете оболочку Bash подсистемы Windows для Linux (WSL), путь будет "C:\Windows\System32\bash.exe"
Теперь нажмите Ctrl + `, чтобы открыть терминал из Visual Studio Code. И у вас будет Баш -
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe"
, терминал не открывался. Пробовал "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
. У меня отлично сработало.
- person Dharmjeet Kumar; 16.12.2017
bash.exe
, а не на git-bash.exe
. Последний откроет терминал вне кода VS как отдельное окно, а bash.exe
будет работать внутри кода VS.
- person Darius; 16.01.2018
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
- person JREAM; 26.10.2018
Обновлено: в более новых версиях Visual Studio Code есть команда Выбрать оболочку по умолчанию в раскрывающемся меню терминала:
Помните, что он просто перечисляет оболочки, которые находятся в вашей переменной среды% 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. Там много мясного.
Нажмите и удерживайте Ctrl + `, чтобы открыть терминал. Внутри терминала введите bash
, чтобы использовать Git Bash в терминале. Примечание. Убедитесь, что на вашем компьютере установлен Git Bash.
Если вы хотите снова использовать PowerShell, просто введите powershell
в терминале. Чтобы использовать командную строку Windows, введите cmd
в терминале.
Выбранный вами параметр будет использоваться по умолчанию.
exit
из оболочки bash, запущенной внутри оболочки по умолчанию, затем введите powershell
, поскольку bash не знает, что такое PowerShell.
- person Lucas; 08.04.2018
Для меня это единственная комбинация, которая сработала!
"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 открывался за пределами VS !!
Слава богу, наконец-то сработало !! В противном случае я планировал полностью стереть VS и переустановить его (заставив меня переустановить все мои расширения и повторить свои настройки!)
Ситуация немного изменилась из-за последних обновлений Visual Studio Code. Следующие шаги работают для меня.
Нажмите Ctrl + Shift + P, чтобы открыть панель команд Visual Studio Code.
Введите
>preferences: Open Settings (JSON)
в текстовой области.Добавьте следующие строки в конец файла JSON, который отображается на правой панели.
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
Закройте и снова откройте экземпляр Visual Studio Code.
Я следил за этим руководством от Пола ДеКарло, чтобы использовать Bash из подсистемы Windows для Linux (WSL) вместо того, что поставляется с Git Bash для Windows. Это те же шаги, что и выше в ответе, но вместо этого используйте приведенные ниже в настройках пользователя.
"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe",
У меня это сработало в первый раз ... что редко для этого материала.
Это, по крайней мере, для меня, заставит Visual Studio Code открыть новое окно Bash как внешний терминал.
Если вам нужна интегрированная среда, вам нужно указать sh.exe
файл внутри bin
папки вашей установки Git.
Таким образом, в конфигурации должно быть указано C:\\<my-git-install>\\bin\\sh.exe
.
Это зависит от того, установили ли вы 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 полностью идентичны. Между ними не должно быть разницы.
Этот ответ аналогичен ответу, получившему наибольшее количество голосов, но с важным отличием: многие предыдущие ответы на этот вопрос сосредоточены на запуске Git Bash, в то время как мой ответ посвящен запуску WSL Bash сильный>.
Включите подсистему Windows для Linux на вашем компьютере с Windows 10.
Откройте код Visual Studio и нажмите и удерживайте Ctrl + `, чтобы открыть терминал.
Откройте палитру команд, используя Ctrl + Shift + P.
Тип 1_.
Выберите
WSL Bash
(НЕGit Bash
) из вариантов.
- Щелкните значок
+
в окне терминала. Новый терминал теперь будет терминалом WSL Bash!
Последний код VS:
- если вы не видите settings.json, перейдите в меню File -> Preferences -> Settings (или нажмите
Ctrl+,
) - Появятся настройки, см. Две вкладки Пользователь (выбран по умолчанию) и Рабочая область. Перейдите в Пользователь -> Функции -> Терминал
- Появится раздел терминала, см. Ссылку
edit in settings.json
. Нажмите и добавьте"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
- Сохраните и перезапустите код VS.
Терминал Bash отразится на терминале.
Добавьте каталог Git\bin
в переменную среды Path
. По умолчанию это каталог %ProgramFiles%\Git\bin
. Таким образом, вы можете получить доступ к Git Bash, просто набрав bash
в каждом терминале, включая интегрированный терминал Visual Studio Code.
Как установить переменные пути и среды в Windows
Я уже настроил множество сред conda
в WSL
(Bash в Ubuntu в Windows), поэтому я хотел использовать ту же установку Bash в Visual Studio Code.
Для этого мне просто нужно было указать путь к этому конкретному исполняемому файлу Bash (вместо Git-Bash
) в настройках Visual Studio Code:
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"
PS: чтобы убедиться, что исполняемый файл Ubuntu on Bash установлен на вашем компьютере с Windows, откройте Command prompt
(поиск: cmd
) и запустите:
where bash.exe
Моя версия VS Code: 1.56.1 (код --version)
Пользовательские настройки для настройки интегрированных терминалов:
- Ctrl + Shift + P
- тип: пользователь
- выберите: Предпочтения: Открыть настройки пользователя
- нажмите: кнопка "Открыть настройки" (JSON) (рядом с правым верхним углом)
settings.json:
{
"terminal.integrated.tabs.enabled": true,
"terminal.integrated.shell.windows": "<your installation path>\\Git\\bin\\bash.exe",
"terminal.integrated.defaultProfile.windows": "Git Bash",
"terminal.integrated.profiles.windows": {
"Git Bash": {
"path": "<your installation path>\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
},
"Command Prompt": {
"path": "${env:windir}\\System32\\cmd.exe",
"icon": "terminal-cmd"
},
"Windows PowerShell": {
"path": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"icon": "terminal-powershell"
}
}
}
terminal.integrated.defaultProfile.windows
Это свойство установит GitBash по умолчанию, только когда вы нажмете кнопку добавления нового терминала (+). Недостаточно установить его по умолчанию при запуске.
терминал.integrated.shell.windows
Будет показано подробное предупреждение. Но эта конфигурация необходима для того, чтобы выбранная оболочка (здесь GitBash) использовалась по умолчанию при запуске.
Проблема с фильтрацией
На вкладке ПРОБЛЕМЫ рядом с полем ввода, щелкнув значок фильтра, я установил флажок «Показать только активный файл», чтобы эта устаревшая ошибка исчезла при работе с чем-либо еще.
А как насчет отдельных или независимых оболочек и code [args]
поддержки?
В то время как в других ответах говорится о том, как настроить и использовать интегрированную в VScode поддержку WSL bash
терминала, они не решают проблему «отсоединенных оболочек»: оболочек, которые не были запущены изнутри VScode, или которые каким-то образом «отключаются» от VScode экземпляр сервера, связанный с IDE.
Такие оболочки могут выдавать такие ошибки, как:
Command is only available in WSL or inside a Visual Studio Code terminal.
or...
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 - [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"
Я консультирую компанию Fortune 500, и это, к сожалению, Windows 7 strong> и никаких прав администратора. Таким образом, на мою машину были загружены 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"
}
Я попробовал приведенные выше ответы для 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 а>.
Для пользователей scoop:
"terminal.integrated.shell.windows": "C:\\Users\\[YOUR-NAME]\\scoop\\apps\\git\\current\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": [
"-l",
"-i"
],
Чтобы открыть терминал в Visual Studio Code, вам не нужно использовать Ctrl + `, как рекомендуется везде, так как это очень неудобно для работы пальцем. Лучшим решением было бы следующее:
Ctrl + j
(2021, VSC v.1.55.1)
Как добавить Git Bash
по умолчанию Terminal
для тех, кто установил Git Bash не по пути по умолчанию:
- В Visual Studio Code откройте
Settings
с помощью Ctrl + , - a) В
Search settings
(красный прямоугольник на скриншоте) введитеintegrated automation
б) Или просто нажмите" Функции "-› Терминал (синие поля на ss)
- Щелкните любой Изменить в settings.json
- Введите свое
bash.exe
местоположение в"terminal.integrated.shell.windows": " "
поле
Примечание 1: так как это файл JSON, не забудьте использовать двойное \\
вместо \
в пути.
Примечание 2: не путайте bash.exe
(он находится в папке bin
) с git-bash.exe
, в первом случае терминал bash останется внутри VSC, а во втором он будет открыт извне.
Если у вас уже есть интерфейс командной строки bash, powershell и cmd и правильные настройки пути, переключение с одного интерфейса командной строки на другой можно выполнить следующими способами.
Ctrl + ': открывает окно терминала с интерфейсом командной строки по умолчанию.
bash + enter: переключение с используемого по умолчанию / текущего интерфейса командной строки на интерфейс командной строки bash.
powershell + enter: переключение с используемого по умолчанию / текущего интерфейса командной строки на интерфейс командной строки powershell.
cmd + enter: переключение с используемого по умолчанию / текущего интерфейса командной строки на интерфейс командной строки cmd.
Версия кода VS, которую я использую, - 1.45.0
В последней стабильной сборке, то есть 1.54, отключение ConPTY решило мою проблему. Я пишу это на случай, если это решит и вашу.
{
"terminal.integrated.shell.windows": "C:\\path\\to\\bin\\bash.exe",
"terminal.integrated.windowsEnableConpty": false
}