Come posso usare Bash su Windows dal terminale integrato di Visual Studio Code?


Risposte:


347

Non è più necessario digitare manualmente il percorso bash.exe. Questa risposta è obsoleta. Ora puoi passare direttamente a bash. Assicurati di aver installato git.


Installa Git da https://git-scm.com/download/win .

Quindi apri Visual Studio Code e apri la tavolozza dei comandi usando Ctrl+ Shift+ P. Quindi digitare "Apri impostazioni utente", quindi selezionare "Apri impostazioni utente" dal menu a discesa.

Palato dei comandi di Visual Studio Code

Quindi questa scheda si aprirà con le impostazioni predefinite a sinistra e le tue impostazioni a destra:

inserisci qui la descrizione dell'immagine

Ora copia questa riga di codice nella tua pagina delle impostazioni (il riquadro a destra) e salva - "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Nota: "C:\\Program Files\Git\bin\bash.exe" è il percorso in cui bash.exesi trova il file dall'installazione di Git. Se si utilizza la shell Bash del sottosistema Windows per Linux (WSL), il percorso sarebbe"C:\Windows\System32\bash.exe"

Ora premi Ctrl+ `per aprire il terminale da Visual Studio Code. E avrai Bash -

Inserisci qui la descrizione dell'immagine


1
Questi sono i colori predefiniti di Git Bash.
Mahade Walid,

5
Due informazioni, che potrebbero essere utili: assicurati di sfuggire ai caratteri rovesciati nel tuo json, quando scrivi il percorso. Assicurati anche di includere la versione a 64 bit di git bash nel tuo vscode, poiché la versione a 32 bit potrebbe non avere i colori per impostazione predefinita. (Rimuovi semplicemente la parte "(x86)" dal percorso)
Lajos Meszaros,

2
Aggiungendo a Lajos, se ancora non riesci a vedere il terminale aprirsi, prova a riavviare vscode.
adityah,

3
Stavo affrontando un problema "terminal.integrated.shell.windows": "C:\\Program Files\\Git\bin\bash.exe", il terminale non si apriva. Provato "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe". Ha funzionato perfettamente per me.
Dharmjeet Kumar,

28
Cordiali saluti, assicurati di collegarti bash.exee non git-bash.exe. Quest'ultimo aprirà un terminale esterno al codice VS come una finestra separata, mentre bash.exeverrà eseguito all'interno del codice VS.
Dario

258
  1. Installa Git da https://git-scm.com/download/win

  2. Apri il codice di Visual Studio e tieni premuto Ctrl+ `per aprire il terminale.

    Inserisci qui la descrizione dell'immagine

  3. Aprire la tavolozza dei comandi utilizzando Ctrl + Shift+ P.

  4. Tipo: selezionare Shell predefinita

  5. Seleziona Git Bash dalle opzioni

  6. Fare clic sull'icona + nella finestra del terminale

  7. Il nuovo terminale ora sarà un terminale Git Bash. Dagli qualche secondo per caricare Git Bash

    Inserisci qui la descrizione dell'immagine

  8. È ora possibile alternare tra i diversi terminali e dal menu a discesa nel terminale.

    Inserisci qui la descrizione dell'immagine


5
Questo ha funzionato per me. Ho provato tutte le altre guide aggiungendo manualmente la bash predefinita ma ogni volta ha appena aperto una nuova finestra del terminale. Mille grazie
Glen,

3
questo è quello che stavo cercando ... questa dovrebbe essere la risposta più semplice accettata
Boopathi T

1
Perfettamente spiegato .. Grazie per questa risposta.
SKalariya,

se ctrl + `non funziona (come in, non succede nulla! anche dopo aver installato git e impostato le impostazioni utente json), quindi provare questo: ctrl + maiusc + P> Focus Terminal.
Olisteadman,

1
Soluzione più semplice e veloce
Themelis

80

Aggiornato: le versioni più recenti di Visual Studio Code hanno il comando Seleziona shell predefinita nel menu a discesa del terminale:

Seleziona l'opzione Shell predefinita

Ricorda che elenca solo le shell presenti nella variabile di ambiente% PATH%. Per le shell che non sono nel tuo percorso, vedi altre risposte.

Suggerimento extra: quando avvii bash verrà eseguito .bashrc, se hai comandi di inizializzazione .bash_profiledevi copiarlo .bashrc. È essenziale per l'utilizzo degli ambienti Conda in Git Bash.

Prima della versione 1.36 (giugno 2019)

Il modo più semplice ora (almeno da Visual Studio Code 1.22 in poi) è digitare Shift+ Ctrl+ Pper aprire la Tavolozza comandi e digitare:

Select Default Shell

Ora puoi facilmente selezionare la tua shell preferita tra quelle trovate nel tuo percorso :

Elenco di selezione della shell

Per le shell che non sono nel tuo% PATH%, vedi le altre risposte.

Vedere il riferimento completo alla shell del codice di Visual Studio . Ci sono molte cose carnose.


1
Questa era la risposta che stavo cercando. Volevo usare WSL Bash ma le altre risposte stavano cercando di usare la bash che viene fornita con git
ahmadali shafiee,

1
C'è un modo per aprire una particolare shell ... senza renderla "predefinita?" Penso che abbia senso avere una "bash" aperta solo per questa volta. "
Brent Arias,

41

Tenere premuto Ctrl+ `per aprire il terminale. All'interno del terminale, digitare bashper utilizzare Git Bash nel terminale. Nota: assicurati di avere Git Bash installato sul tuo computer.

Se desideri utilizzare di nuovo PowerShell, digita semplicemente powershellil terminale. Per utilizzare la riga di comando di Windows, digitarecmd il terminale.

L'impostazione scelta verrà utilizzata come predefinita.


4
questo aggiunge più valore alla risposta selezionata
pjdupreez

1
Per "tornare a PowerShell" probabilmente è necessario che exittu esegua la shell bash all'interno della shell predefinita, quindi digita powershellpoiché bash non sa cosa sia PowerShell.
Lucas Morgan,

13

Per me la seguente è l'unica combinazione che funziona!

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

Con git-bash.exe come ...shell.windows, ogni volta che Bash si apriva al di fuori di Visual Studio !!


1
questo mi ha davvero aiutato. Ho fatto funzionare bash in base alle risposte precedenti sopra, ma ho perso tutti i miei alias bash e git. Questo li ha ricomprati. Grazie.
David Martin,

1
Questo è ciò che ha funzionato con me: "terminal.integrated.shell.windows": "C: \\ Programmi \\ Git \\ bin \\ bash.exe", "terminal.integrated.shellArgs.windows": ["- -login "," -i "]
Belal Mohammed,

Questa soluzione ha funzionato anche per me. Un avvertimento da aggiungere è che nel mio caso, per ridurre il ritardo con gitbash, ho seguito questo post stackoverflow.com/questions/32232978/… e impostato una nuova variabile di ambiente HOME in Windows. Per farlo funzionare correttamente in VSCode, la risposta sopra ha funzionato perfettamente.
Rob B

13

Le cose sono state un po 'cambiate a causa degli ultimi aggiornamenti su Visual Studio Code. I seguenti passaggi funzionano per me.

  1. Premi Ctrl+ Shift+ Pper aprire il palato dei comandi di Visual Studio Code.

  2. Digita >preferences: Open Settings (JSON)l'area di testo.

  3. Aggiungi le seguenti righe alla fine del file JSON che viene visualizzato nel riquadro di destra.

    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
  4. Chiudi e riapri l'istanza di Visual Studio Code.


10

Ho seguito questo tutorial di Paul DeCarlo per usare Bash dal sottosistema Windows per Linux (WSL) invece di quello che viene fornito con Git Bash per Windows. Sono gli stessi passaggi sopra indicati nella risposta, ma utilizza invece le seguenti impostazioni utente.

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

Questo ha funzionato per me la prima volta ... il che è raro per queste cose.


1
davvero raro. all'avanguardia
Christopher Painter,

7

Questo, almeno per me, farà aprire a Visual Studio Code una nuova finestra di Bash come terminale esterno.

Se si desidera l'ambiente integrato, è necessario puntare al sh.exefile all'interno dibin cartella dell'installazione di Git.

Quindi la configurazione dovrebbe dire C:\\<my-git-install>\\bin\\sh.exe.


5

Dipende se hai installato Git Bash solo nell'attuale utente o in tutti gli utenti:

Se è installato su tutti gli utenti, inserisci le "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"tue Impostazioni utente ( Ctrl+ Comma).

Se è installato solo sull'utente corrente, inserisci le "terminal.integrated.shell.windows": "C:\\Users\\<name of your user>\\AppData\\Local\\Programs\\Git\\bin\\bash.exe"tue Impostazioni utente ( Ctrl+ Comma).

Se i metodi sopra elencati non funzionano, dovresti provare la soluzione di Christer che dice:

Se si desidera l'ambiente integrato, è necessario puntare al sh.exefile all'interno dellabin cartella dell'installazione di Git.

Quindi la configurazione dovrebbe dire C:\\<my-git-install>\\bin\\sh.exe.

Nota: sh.exe e bash.exe mi sembrano completamente uguali. Non ci dovrebbero essere differenze tra loro.



4

Avevo già impostato molti condaambienti su WSL(Bash su Ubuntu su Windows), quindi volevo usare la stessa installazione di Bash su Visual Studio Code.

Per fare ciò, dovevo solo specificare il percorso di questo particolare eseguibile di Bash ( anziché ilGit-Bash ) nelle impostazioni di Visual Studio Code:

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


PS : per accertarti che il tuo eseguibile Ubuntu su Bash sia installato sul tuo computer Windows, apri Command prompt(cerca cmd:) ed esegui:

where bash.exe


4

Questa risposta è simile alla risposta più votata, ma con un'importante distinzione: molte delle risposte precedenti su questa domanda si concentrano sull'esecuzione di Git Bash mentre la mia risposta si concentra sull'esecuzione di WSL Bash .

  1. Abilita il sottosistema Windows per Linux sul tuo computer Windows 10.

  2. Apri Visual Studio Code e tieni premuto Ctrl + `per aprire il terminale.

  3. Aprire la tavolozza dei comandi utilizzando Ctrl + Shift + P.

  4. Digitare - Select Default Shell.

  5. Selezionare WSL Bash(NON Git Bash) dalle opzioni.

inserisci qui la descrizione dell'immagine

  1. Fare clic +sull'icona nella finestra del terminale. Il nuovo terminale ora sarà un terminale WSL Bash!

4

Ultimo codice VS:

  • se non riesci a visualizzare settings.json, vai al menu File -> Preferenze -> Impostazioni (o premi su Ctrl+,)
  • Vengono visualizzate le impostazioni, vedere due schede Utente (selezionato per impostazione predefinita) e Area di lavoro. Vai a Utente -> Funzioni -> Terminale
  • Viene visualizzata la sezione Terminale, vedere il collegamento edit in settings.json. Fai clic e aggiungi"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  • Salva e riavvia il codice VS.

Il terminale Bash si rifletterà sul terminale.


1

Mi capita di consultarmi con un'azienda di Fortune 500 ed è purtroppo Windows 7 e nessun privilegio di amministratore. Quindi Node.js, Npm, Visual Studio Code, ecc. Sono stati trasferiti sulla mia macchina - non posso cambiare molto, ecc ...

Per questo computer con Windows 7:

Di seguito sono le mie nuove impostazioni. Quello che non funziona è commentato.

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

0

Ho provato le risposte sopra a partire dal vscode 1.42.1 e hanno funzionato in modo da procurarmi un terminale Git Bash. Quindi, linea di fondo questa impostazione funziona solo per l'apertura di una shell bash dal terminale:

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

Tuttavia ha l'effetto collaterale indesiderato di essere anche la shell usata per costruire cose e che rompe la catena MS C ++ perché il \carattere usato per il separatore di percorso è inteso da bash come carattere di escape. La correzione completa per me quindi mi ha richiesto di aggiungere questa variabile aggiuntiva, impostandola su PowerShell:

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

Ora posso avere il mio terminale bash e Ctrl-Shift-BoF5 lavorare senza problemi.

Oh, e come altri manifesti menzionati, la fonte di queste informazioni è la documentazione di VSCode .


0

Che dire di shell e code [args]supporto distaccati o non correlati ?

Mentre altre risposte parlano di come configurare e utilizzare il bashsupporto del terminale WSL integrato VScode , non risolvono il problema delle "shell distaccate": shell che non sono state avviate da VScode o che in qualche modo vengono "disconnesse" dal server VScode istanza associata all'IDE.

Tali shell possono dare errori come:

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

o...

Unable to connect to VS Code server. Error in request

Ecco uno script che semplifica la risoluzione di questo problema.

Lo uso quotidianamente per connettere shell in una tmuxsessione con un'istanza specifica del server VScode o per correggere una shell integrata che si stacca dal suo IDE di hosting.

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

Se hai già l' interfaccia della riga di comando "bash", "powershell" e "cmd" e hai le impostazioni di percorso corrette, puoi passare da una CLI a un'altra nei modi seguenti.

Ctrl+ ': Apre la finestra del terminale con l'interfaccia della riga di comando predefinita.

bash + enter: passa dalla CLI predefinita / corrente alla CLI bash .

powershell + enter: passa dalla CLI predefinita / corrente a powershell .

cmd + enter: passa dalla CLI predefinita / corrente alla CLI cmd .

La versione del codice VS che sto usando è 1.45.0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.