7

Jak mogę uruchomić system Windows Bash z kodu programu Visual Studio jako zadanie uruchamiania?Windows Bash and Visual Studio Code: Jak mogę uruchomić bash jako zadanie run?

Oto niektóre z moich wielu prób wykonania tego w tasks.json.

{ 
    "version": "0.1.0", 
    "command": "cmd", 
    "isShellCommand": true, 
    "args": [ "RunShellScript.bat" ], 
    "showOutput": "always" 
} 

RunShellScript.bat ma tylko ten wiersz: bash myShellScript.sh. Co jeśli po prostu otworzysz cmd od początku i wpiszesz tę linię, zostanie ona uruchomiona. Działa również idealnie, jeśli tylko dwukrotnie klikniesz plik. Jednak po uruchomieniu z VSCode, to wyjście po prostu zawiesza się, dopóki go nie zakończę.

Próba numer 2:

{ 
    "version": "0.1.0", 
    "command": "cmd", 
    "isShellCommand": true, 
    "args": [ "bash myShellScript.sh" ], 
    "showOutput": "always" 
} 

To też wisi, podobnie jak powyżej.

Próba numer 3:

{ 
    "version": "0.1.0", 
    "command": "C:/Windows/System32/bash", 
    "isShellCommand": false, 
    "args": [ "myShellScript.sh" ], 
    "showOutput": "always" 
} 

To daje mi:

Failed to launch external program C:/Windows/System32/bash myShellScript.sh 
spawn C:/Windows/System32/bash ENOENT 

Ive eksperymentował również z ustawieniem "isShellCommand" zmienną na true i false w niektórych z tych przypadków, ale bezskutecznie.

Czy ktoś wie, jak to zrobić?

Odpowiedz

6

Ja też szukałem aby zobaczyć, jak mógłbym zrobić to samo.

andlrc - Próbowałem twoich dwóch opcji i żaden z nich nie wydaje się załatwiać sprawy. Problem wydaje się być w tym bash nie jest rozpoznawany w jakikolwiek kontekst wizualny kod Studio uruchamia go w Próbowałem różnych podejść.

  • „polecenia”: „C: /Windows/System32/bash.exe”
  • "polecenia": "bash" "komenda"
  • : "bash.exe"

będę próbować i zakładać z powrotem, jeśli mogę coś pracy.

Edytuj: Rozumiem. Kredyt dla tego człowieka - https://aigeec.com/using-windows-10-anniversary-bash-with-visual-studio-code/

Podsumowując, sprowadza się to do tego, że jestem w 64-bitowym systemie operacyjnym, co oznacza, że ​​bash.exe znajduje się w C: \ Windows \ System32. Po skopiowaniu pliku bash.exe do SysWOW64, jak sugeruje post w blogu, domyślna akcja kompilacji (Ctrl + Shift + B) kodu Visual Studio działa tak, jak tego oczekiwałeś.

To wydaje się trochę hacky - prawdopodobnie warto zebrać z MSFT, aby sprawdzić, czy jest coś, co możemy z tym zrobić.

Edit: Oto mój tasks.json na żądanie:

{ 
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format 
    "version": "0.1.0", 
    "command": "bash", 
    "isShellCommand": true, 
    "args": [ "./gulp.sh" ], 
    "showOutput": "always", 
    "tasks": [{ 
    "taskName": "scripts", 
    "isBuildCommand": true, 
    "problemMatcher": "$gulp-tsc", 
    "isWatching": true 
    }] 

}

gulp.sh zawiera tylko jedno polecenie; "gulp" :-) ale możesz zasadniczo umieścić tam, co chcesz tam, przypuszczam, że możesz mieć kilka skryptów .sh, aby obsłużyć różne taśmy zadań

W odpowiedzi na użycie Sysnative, niestety to doesn ' wydaje się to rozumieć, a zadanie kompilacji nie działa.

+8

Mniej hackowskim rozwiązaniem byłoby próba uruchomienia 'C: \ Windows \ sysnative \ bash.exe'. –

+0

Czy możesz edytować swój wpis, aby uwzględnić również tasks.json lub launch.json? – atzero

+0

Moje tak zwane "rozwiązanie" z jakiegoś powodu przestało działać ... Śledztwo. –

0

Spróbuj:

{ 
    "version": "0.1.0", 
    "command": "bash", 
    "isShellCommand": true, 
    "args": [ "myShellScript.sh" ], 
    "showOutput": "always" 
} 

Albo można dodać shebang do pliku:

#!/bin/bash 

a następnie wpisz ścieżkę do skryptu:

{ 
    "version": "0.1.0", 
    "command": "/path/to/script.sh", 
    "isShellCommand": true, 
    "args": [], 
    "showOutput": "always" 
} 
+0

Mój skrypt nie mają shebang się szczyt, ale postaram obu tych – atzero

+0

Aktualizacja: Niestety Mate oboje didnt work =/ – atzero

2

Na moim komputerze z systemem Windows 10, który świeżo zainstalowanym bash, to działa dobrze dla mnie:

{ 
    "version": "0.1.0", 
    "command": "bash", 
    "isShellCommand": true, 
    "args": [ "shellscript.sh" ], 
    "showOutput": "always" 
} 

shebang wersja shellscript.sh jak command nie działa dla mnie.

Można również użyć bash -c "<command>" uruchomić dowolną komendę:

{ 
    "version": "0.1.0", 
    "command": "bash", 
    "isShellCommand": true, 
    "args": ["-c", "echo \"test\""], 
    "showOutput": "always" 
} 

enter image description here

+0

32 lub 64-bitowy? i co jest w twoim shellscript.sh? Otworzyłem problem z Microsoftem w tej sprawie i mogłem replikować te same problemy, które miałem - [link] (https://github.com/Microsoft/vscode/issues/6579) –

+0

64-bitowy, przenieśmy dyskusję na github . –

Powiązane problemy