Як використовувати Bash для Windows з інтегрованого терміналу Visual Studio Code?


279

Visual Studio Code в Windows використовується PowerShell за замовчуванням як інтегрований термінал. Якщо ви хочете використовувати Bash від Visual Studio Code, яких кроків слід дотримуватися?


Будь ласка, прочитайте 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. Якщо ви використовуєте підсистему Windows для оболонки Bash для Linux (WSL), шлях буде таким"C:\Windows\System32\bash.exe"

Тепер натисніть Ctrl+, `щоб відкрити термінал з коду Visual Studio. І у вас буде Bash -

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


1
Це кольори за замовчуванням від git bash.
Махаде Валід

5
Дві інформації, які можуть бути корисними: переконайтеся, що ви уникаєте зворотних нахилів символів у своєму json, коли пишете шлях. Також переконайтеся, що ви включили 64-бітну версію git bash до свого коду, оскільки 32-бітна версія може не мати кольорів за замовчуванням. (Просто приберіть частину "(x86)" зі шляху)
Lajos Meszaros

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". Для мене прекрасно працювали.
Dharmjeet Kumar

28
FYI, переконайтеся, що ви посилаєтесь bash.exe, а не git-bash.exe. Останнє відкриє термінал за межами коду VS як окреме вікно, тоді як він bash.exeбуде працювати всередині коду VS.
Дарій

258
  1. Встановіть Git з https://git-scm.com/download/win

  2. Відкрийте Visual Studio Code і натисніть і утримуйте Ctrl+, `щоб відкрити термінал.

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

  3. Відкрийте палітру команд за допомогою Ctrl+ Shift+ P.

  4. Тип - Виберіть оболонку за замовчуванням

  5. Виберіть Git Bash з опцій

  6. Клацніть на значку + у вікні терміналу

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

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

  8. Тепер ви можете перемикатися між різними терміналами, а також зі спадного терміналу.

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


5
Це працювало для мене. Я спробував усі інші посібники, додавши вручну баш за замовчуванням вручну, але він щоразу відкривав нове вікно терміналу. Велике спасибі
Глен

3
це те, що я шукав ... це має відповісти на більш просту відповідь
Boopathi T

1
Чудово пояснено .. Дякую за цю відповідь.
СКаларія

якщо ctrl + `не працює (як у, нічого не відбувається! навіть після встановлення git та встановлення налаштувань користувача json), спробуйте це: ctrl + shift + P> фокус-термінал.
olisteadman

1
Простіше і швидше рішення
Темеліс

80

Оновлено: новіші версії коду Visual Studio містять команду Select 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 Code . Там багато м'ясного.


1
Це була відповідь, яку я шукав. Я хотів використовувати WSL Bash, але в інших відповідях намагався використовувати баш, який поставляється з git
ахмадалі shafiee

1
Чи є спосіб відкрити певну оболонку ... не роблячи її "типовою"? Я думаю, що є сенс мати "відкритий" удар саме цього разу ".
Brent Arias

41

Натисніть і утримуйте Ctrl+, `щоб відкрити термінал. Всередині терміналу введіть bashдля використання Git Bash у терміналі. Примітка. Переконайтеся, що на вашій машині встановлений Git Bash.

Якщо ви хочете знову використовувати PowerShell, просто введіть powershellтермінал. Для використання командного рядка Windows введіть cmdтермінал.

Вибране налаштування використовуватиметься за замовчуванням.


4
це додає більшої цінності вибраній відповіді
pjdupreez

1
Щоб "переключитися назад на powershell", ймовірно, потрібно exitз вашої bash shell, що працює всередині оболонки за замовчуванням, а потім введіть, powershellоскільки bash не знає, що таке shellhell.
Лукас Морган

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 та git. Це їх викупило. Дякую.
Девід Мартін

1
Це те, що працювало зі мною: "terminal.integrated.shell.windows": "C: \\ Файли програм \\ 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 мені здаються абсолютно однаковими. Різниці між ними не повинно бути.


4

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

Як встановити змінні шляху та середовища в Windows


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


4

Ця відповідь схожа на верхню відповідь, яка проголосується, але з важливою відмінністю: багато попередніх відповідей на це питання зосереджені на запуску Git Bash, тоді як моя відповідь зосереджена на запуску WSL Bash .

  1. Увімкніть підсистему Windows для Linux на вашій машині Windows 10.

  2. Відкрийте Visual Studio Code і натисніть і утримуйте, Ctrl + `щоб відкрити термінал.

  3. Відкрийте палітру команд за допомогою Ctrl + Shift + P.

  4. Тип - Select Default Shell.

  5. Виберіть WSL Bash(НЕ Git Bash) з опцій.

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

  1. Клацніть на +значку у вікні терміналу. Новим терміналом тепер буде WSL Bash термінал!

4

Останній код VS:

  • якщо ви не бачите settings.json, перейдіть до меню Файл -> Налаштування -> Налаштування (або натисніть на Ctrl+,)
  • З'являються налаштування, див. Дві вкладки Користувач (вибрано за замовчуванням) та Робоча область. Перейдіть до Користувача -> Особливості -> Термінал
  • З'явиться розділ терміналу, див. Посилання edit in settings.json. Клацніть та додайте"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Зберегти та перезапустити код VS.

Термінал Bash відображатиметься на терміналі.


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 shell з терміналу:

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

Однак у нього є небажаний побічний ефект - це також оболонка, яка використовується для створення речей, і це розриває ланцюг MS C ++, оскільки \символ, який використовується для роздільника шляху, розуміється bash як символом втечі. Тоді для мене повне виправлення вимагало додати цю додаткову змінну, встановивши її в shellhell:

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

Тепер я можу мати свій баш-термінал і / Ctrl-Shift-Bабо F5працювати без проблем.

О, і як згадували інші афіші, джерелом цієї інформації є документація VSCode .


0

А як щодо відокремлених або споріднених снарядів та code [args]опор?

Хоча в інших відповідях йдеться про те, як налаштувати та використовувати bashпідтримку терміналу WSL-інтегрованої 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"

0

Якщо у вас вже є "bash", "powerhell" та "cmd" CLI, і ви маєте правильні налаштування шляху, то перехід від одного CLI до іншого може здійснюватися такими способами.

Ctrl+ ': Відкриває вікно терміналу з CLI за замовчуванням.

bash + enter: перехід від стандартного / поточного CLI до bash CLI.

powershell + enter: Перехід від стандартного / поточного CLI до CLI powershell .

cmd + enter: перехід від CLI за замовчуванням / поточним CLI до CLD CLI.

Версія коду VS, яку я використовую, становить 1.45.0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.