Làm cách nào để sử dụng Bash trên Windows từ thiết bị đầu cuối tích hợp Visual Studio Code?


Câu trả lời:


347

Bạn không còn cần phải nhập đường dẫn bash.exe theo cách thủ công. Câu trả lời này không được chấp nhận. Bây giờ bạn có thể chuyển sang bash trực tiếp. Chỉ cần chắc chắn rằng bạn đã cài đặt git.


Cài đặt Git từ https://git-scm.com/doad/win .

Sau đó mở Visual Studio Code và mở bảng lệnh bằng Ctrl+ Shift+ P. Sau đó nhập "mở cài đặt người dùng" và sau đó chọn "Mở cài đặt người dùng" từ menu thả xuống.

Lệnh Visual Studio Code

Sau đó, tab này sẽ mở ra với các cài đặt mặc định ở bên trái và các cài đặt của bạn ở bên phải:

nhập mô tả hình ảnh ở đây

Bây giờ sao chép dòng mã này vào trang cài đặt của riêng bạn (khung ở phía bên phải) và lưu - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Lưu ý: "C:\\Program Files\Git\bin\bash.exe" là đường dẫn bash.exetệp được đặt từ cài đặt Git. Nếu bạn đang sử dụng shell Bash của Hệ thống con Windows cho Linux (WSL), đường dẫn sẽ là"C:\Windows\System32\bash.exe"

Bây giờ nhấn Ctrl+ `để mở thiết bị đầu cuối từ Visual Studio Code. Và bạn sẽ có Bash -

Nhập mô tả hình ảnh ở đây


1
Đó là những màu mặc định từ git bash.
Mahade Walid

5
Hai infos, có thể hữu ích: đảm bảo rằng bạn thoát khỏi các ký tự dấu gạch chéo ngược trong json của bạn, khi viết đường dẫn. Ngoài ra, hãy đảm bảo rằng bạn bao gồm phiên bản git bash 64 bit cho vscode của bạn, vì phiên bản 32 bit có thể không có màu theo mặc định. (Chỉ cần xóa phần "(x86)" khỏi đường dẫn)
Lajos Meszaros

2
Thêm vào Lajos, nếu bạn vẫn không thể thấy thiết bị đầu cuối mở ra, hãy thử khởi động lại vscode.
adityah

3
Tôi đã phải đối mặt với vấn đề với "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe", thiết bị đầu cuối đã không được mở. Đã thử "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". Làm việc hoàn hảo cho tôi.
Dharmjeet Kumar

28
FYI, đảm bảo bạn liên kết đến bash.exe, và không git-bash.exe. Cái sau sẽ mở một thiết bị đầu cuối bên ngoài mã VS dưới dạng một cửa sổ riêng biệt, trong khi bash.exesẽ chạy bên trong mã VS.
Darius

257
  1. Cài đặt Git từ https://git-scm.com/doad/win

  2. Mở Visual Studio Code và nhấn và giữ Ctrl+ `để mở terminal.

    Nhập mô tả hình ảnh ở đây

  3. Mở bảng lệnh bằng cách sử dụng Ctrl+ Shift+ P.

  4. Loại - Chọn Shell mặc định

  5. Chọn Git Bash từ các tùy chọn

  6. Nhấp vào biểu tượng + trong cửa sổ terminal

  7. Thiết bị đầu cuối mới bây giờ sẽ là thiết bị đầu cuối Git Bash. Đợi vài giây để tải Git Bash

    Nhập mô tả hình ảnh ở đây

  8. Bây giờ bạn có thể chuyển đổi giữa các thiết bị đầu cuối khác nhau từ danh sách thả xuống trong thiết bị đầu cuối.

    Nhập mô tả hình ảnh ở đây


5
Điều này làm việc cho tôi. Tôi đã thử tất cả các hướng dẫn khác bằng cách thêm thủ công vào bash mặc định nhưng nó chỉ mở ra một cửa sổ terminal mới mỗi lần. Rất cám ơn
Glen

3
đây là những gì tôi đang tìm kiếm ... đây sẽ là câu trả lời đơn giản hơn được chấp nhận
Boopathi T

1
Giải thích hoàn hảo .. Cảm ơn bạn đã trả lời này.
SKalariya

nếu ctrl + `không hoạt động (như trong, không có gì xảy ra! ngay cả sau khi đã cài đặt git và đặt cài đặt người dùng json), thì hãy thử điều này: ctrl + shift + P> Focus Terminal.
olisteadman

1
Giải pháp đơn giản và nhanh hơn
Themelis

80

Đã cập nhật: Các phiên bản mới hơn của Visual Studio Code có lệnh Chọn Mặc định Shell trong menu kéo xuống thiết bị đầu cuối:

Chọn tùy chọn Shell mặc định

Hãy nhớ rằng nó chỉ liệt kê các shell nằm trong biến môi trường% PATH% của bạn. Đối với các vỏ không nằm trong đường dẫn của bạn, hãy xem các câu trả lời khác.

Mẹo thêm: khi bạn bắt đầu bash, nó sẽ thực thi .bashrc, nếu bạn có các lệnh khởi tạo, .bash_profilebạn phải sao chép nó vào .bashrc. Đó là điều cần thiết để sử dụng môi trường Conda trong Git Bash.

Trước phiên bản 1.36 (tháng 6 năm 2019)

Cách dễ nhất bây giờ (ít nhất là từ Visual Studio Code 1.22 trở đi) là nhập Shift+ Ctrl+ Pđể mở Bảng lệnh và gõ:

Select Default Shell

Bây giờ bạn có thể dễ dàng chọn lớp vỏ ưa thích giữa những cái được tìm thấy trong đường dẫn của bạn :

Danh sách lựa chọn Shell

Đối với các shell không nằm trong% PATH% của bạn, hãy xem các câu trả lời khác.

Xem tài liệu tham khảo vỏ Visual Studio Code hoàn chỉnh . Có rất nhiều thứ thịt.


1
Đây là câu trả lời tôi đang tìm kiếm. Tôi muốn sử dụng WSL Bash nhưng các câu trả lời khác đã cố gắng sử dụng bash đi kèm với git
ahmadali shafiee

1
Có cách nào để mở một shell cụ thể ... mà không làm cho nó trở thành "mặc định?" Tôi nghĩ rằng nó có ý nghĩa để có một "bash" mở chỉ một lần này. "
Brent Arias

41

Nhấn và giữ Ctrl+ `để mở thiết bị đầu cuối. Trong thiết bị đầu cuối, nhập bashđể sử dụng Git Bash trong thiết bị đầu cuối. Lưu ý: Đảm bảo bạn đã cài đặt Git Bash trên máy của mình.

Nếu bạn muốn sử dụng lại PowerShell, chỉ cần nhập powershellvào thiết bị đầu cuối. Để sử dụng dòng lệnh Windows, nhập cmdvào thiết bị đầu cuối.

Cài đặt bạn chọn sẽ được sử dụng làm mặc định của bạn.


4
điều này làm tăng thêm giá trị cho câu trả lời được chọn
pjdupreez

1
Để "chuyển trở lại powershell" có lẽ bạn cần exittừ shell bash chạy bên trong shell mặc định, sau đó gõ powershellvì bash không biết powershell là gì.
Lucas Morgan

13

Đối với tôi sau đây là sự kết hợp duy nhất hoạt động!

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

Với git-bash.exe ...shell.windows, mỗi khi Bash mở bên ngoài Visual Studio !!


1
điều này thực sự giúp tôi Tôi đã làm bash làm việc theo các câu trả lời trước ở trên, nhưng tôi đã mất tất cả các bí danh bash và git của mình. Điều này đã mua lại chúng. Cảm ơn.
David Martin

1
Đây là những gì đã làm việc với tôi: "terminal.integrated.shell.windows": "C: \\ Chương trình Files \\ Git \\ bin \\ bash.exe", "terminal.integrated.shellArgs.windows": ["- -login "," -i "]
Belal Mohammed

Giải pháp này làm việc cho tôi là tốt. Một lưu ý nữa là trong trường hợp của tôi, để giảm độ trễ bằng gitbash, hãy theo dõi bài đăng này stackoverflow.com/questions/32232978/ và đặt biến môi trường HOME mới trong windows. Để làm cho nó hoạt động đúng trong VSCode, câu trả lời ở trên đã hoạt động hoàn hảo.
Rob B

13

Mọi thứ đã được thay đổi một chút do các bản cập nhật mới nhất về Visual Studio Code. Các bước sau đây làm việc cho tôi.

  1. Nhấn Ctrl+ Shift+ Pđể mở vòm lệnh Visual Studio Code.

  2. Nhập >preferences: Open Settings (JSON)vào vùng văn bản.

  3. Thêm các dòng sau vào cuối tệp JSON được hiển thị trong khung bên phải của bạn.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Đóng và mở lại phiên bản Visual Studio Code của bạn.


10

Tôi đã làm theo hướng dẫn này từ Paul DeCarlo để sử dụng Bash từ Hệ thống con Windows cho Linux (WSL) thay vì Git Bash cho Windows. Chúng là các bước tương tự như trên trong câu trả lời, nhưng sử dụng bên dưới trong Cài đặt người dùng của bạn để thay thế.

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

Điều này làm việc cho tôi lần đầu tiên ... rất hiếm khi xảy ra với công cụ này.


1
thực sự hiếm chặt chém
Christopher Họa sĩ

7

Điều này, ít nhất là đối với tôi, sẽ khiến Visual Studio Code mở một cửa sổ Bash mới như một thiết bị đầu cuối bên ngoài.

Nếu bạn muốn môi trường tích hợp, bạn cần trỏ đến sh.exetệp bên trong binthư mục cài đặt Git của bạn.

Vì vậy, cấu hình nên nói C:\\<my-git-install>\\bin\\sh.exe.


5

Nó phụ thuộc vào việc bạn đã cài đặt Git Bash trong người dùng hiện tại hay tất cả người dùng:

Nếu nó được cài đặt trên tất cả người dùng thì hãy "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"đặt Cài đặt người dùng ( Ctrl+ Comma).

Nếu nó chỉ được cài đặt cho người dùng hiện tại thì hãy "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"đặt Cài đặt người dùng ( Ctrl+ Comma).

Nếu các phương pháp được liệt kê ở trên không hoạt động thì bạn nên thử giải pháp của Christer nói -

Nếu bạn muốn môi trường tích hợp, bạn cần trỏ đến sh.exetệp bên trongbinthư mục cài đặt Git của bạn.

Vì vậy, cấu hình nên nói C:\\<my-git-install>\\bin\\sh.exe.

Lưu ý: sh.exe và bash.exe xuất hiện hoàn toàn giống tôi. Không nên có sự khác biệt giữa chúng.



4

Tôi đã thiết lập rất nhiều condamôi trường trênWSL (Bash trên Ubuntu trên Windows), vì vậy tôi muốn sử dụng cùng cài đặt Bash trên Visual Studio Code.

Để làm điều đó, tôi chỉ phải chỉ định đường dẫn này đặc biệt Bash thực thi ( thay vì củaGit-Bash ) trên các thiết lập Visual Studio Mã của:

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


PS : để đảm bảo vị trí thực thi Ubuntu trên Bash của bạn được cài đặt trên máy Windows của bạn, hãy mở Command prompt(search cmd:) và chạy:

where bash.exe


4

Câu trả lời này tương tự như câu trả lời được bình chọn hàng đầu, nhưng với một điểm khác biệt quan trọng: rất nhiều câu trả lời trước cho câu hỏi này tập trung vào việc chạy Git Bash trong khi câu trả lời của tôi tập trung vào việc chạy WSL Bash .

  1. Kích hoạt hệ thống con Windows cho Linux trên máy Windows 10 của bạn.

  2. Mở Visual Studio Code và nhấn và giữ Ctrl + `để mở terminal.

  3. Mở bảng lệnh bằng cách sử dụng Ctrl + Shift + P.

  4. Loại - Select Default Shell.

  5. Chọn WSL Bash(KHÔNG Git Bash) từ các tùy chọn.

nhập mô tả hình ảnh ở đây

  1. Nhấp vào +biểu tượng trong cửa sổ thiết bị đầu cuối. Thiết bị đầu cuối mới bây giờ sẽ là thiết bị đầu cuối WSL Bash!

4

Mã VS mới nhất:

  • nếu bạn không thể thấy settings.json, hãy chuyển đến menu Tệp -> Tùy chọn -> Cài đặt (hoặc nhấn vào Ctrl+,)
  • Cài đặt xuất hiện, xem hai tab Người dùng (được chọn theo mặc định) và Không gian làm việc. Chuyển đến Người dùng -> Tính năng -> Thiết bị đầu cuối
  • Phần thiết bị đầu cuối xuất hiện, xem liên kết edit in settings.json. Nhấp và thêm"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Lưu và khởi động lại mã VS.

Thiết bị đầu cuối Bash sẽ phản ánh trên thiết bị đầu cuối.


1

Tôi tình cờ được tư vấn cho một công ty Fortune 500 và thật đáng buồn là Windows 7 và không có đặc quyền của quản trị viên. Do đó, Node.js, Npm, Visual Studio Code, v.v. đã được đẩy vào máy của tôi - Tôi không thể thay đổi nhiều, v.v ...

Đối với máy tính này chạy Windows 7:

Dưới đây là các cài đặt mới của tôi. Một trong những không làm việc được bình luận ra.

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

0

Tôi đã thử các câu trả lời ở trên kể từ vscode 1.42.1 và họ đã làm việc với tư cách là để đưa cho tôi một thiết bị đầu cuối git bash. Vì vậy, dòng dưới cùng cài đặt này chỉ hoạt động để mở shell bash từ terminal:

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

Tuy nhiên, nó có tác dụng phụ không mong muốn cũng là lớp vỏ được sử dụng để xây dựng mọi thứ và phá vỡ chuỗi MS C ++ vì \ký tự được sử dụng cho trình phân tách đường dẫn được hiểu bởi bash là một ký tự thoát. Bản sửa lỗi hoàn chỉnh cho tôi sau đó yêu cầu tôi thêm biến phụ này, đặt nó thành powershell:

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

Bây giờ, tôi có thể có thiết bị đầu cuối bash của tôi và Ctrl-Shift-Bhoặc F5làm việc mà không có vấn đề.

Ồ, và như các áp phích khác đã đề cập, nguồn cho thông tin này là tài liệu của VSCode .


0

Những gì về vỏ tách ra hoặc không liên quan và code [args] hỗ trợ?

Mặc dù các câu trả lời khác nói về cách định cấu hình và sử dụng bashhỗ trợ đầu cuối WSL tích hợp VScode , nhưng chúng không giải quyết được vấn đề "vỏ tách rời": các vỏ không được khởi chạy từ bên trong VScode hoặc bằng cách nào đó bị "ngắt kết nối" từ máy chủ VScode ví dụ liên quan đến IDE.

Các shell như vậy có thể cho các lỗi như:

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

hoặc là...

Unable to connect to VS Code server. Error in request

Đây là một kịch bản giúp dễ dàng giải quyết vấn đề này.

Tôi sử dụng điều này hàng ngày để kết nối các trình bao trong một tmuxphiên với một phiên bản máy chủ VScode cụ thể hoặc để sửa một trình bao tích hợp bị tách ra khỏi IDE lưu trữ của nó.

#!/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

Nếu bạn đã có "bash", "powershell""cmd" CLI và có các cài đặt đường dẫn chính xác thì việc chuyển từ CLI này sang CLI khác có thể được thực hiện theo các cách sau.

Ctrl+ ': Mở cửa sổ terminal với CLI mặc định.

bash + enter: Chuyển từ CLI mặc định / hiện tại của bạn sang bash CLI.

powershell + enter: Chuyển từ CLI mặc định / hiện tại của bạn sang CLI powershell .

cmd + enter: Chuyển từ CLI mặc định / hiện tại của bạn sang cmd CLI.

Phiên bản mã VS tôi đang sử dụng là 1.45.0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.