Beim Versuch, ein Bash-Skript als Task in VSCode (1.38.1) unter macOS (10.14.6) auszuführen, tritt ein Problem auf. Über das integrierte Terminal wird das Skript wie erwartet ausgeführt. Wenn ich es jedoch als VSCode-Task ausführe, ist die ausführende Shell anscheinend anders und ich bin mir nicht sicher, wie ich sie konfigurieren soll.
Die Aufgabe lautet wie folgt:
"tasks": [
{
"label": "List files",
"type": "shell",
"command": "source ./scripts/test_ls.sh",
"problemMatcher": []
}
]
Und das Skript test_ls.sh lautet einfach:
#!/bin/bash
echo "${BASH_VERSION}"
ls
Das integrierte Terminal habe ich wie folgt konfiguriert (in settings.json):
"terminal.integrated.shell.osx": "/bin/bash",
Wenn ich es manuell vom integrierten Terminal aus ausführe (mit einem der Befehle „bash“ oder „source“), wird die Bash-Version als 3.2.57(1)-Release angegeben und die Dateien werden wie erwartet aufgelistet. Wenn ich jedoch die obige Aufgabe ausführe, gibt die Shell die folgende Ausgabe aus:
> Executing task in folder sdc1-scoring: source ./scripts/test_ls.sh -r <
3.2.57(1)-release
./scripts/test_ls.sh: line 3: ls: No such file or directory
The terminal process terminated with exit code: 127
was die Frage aufwirft: Wenn das Skript nicht mit Bash ausgeführt wird, was verwendet es dann? Und wie kann dies konfiguriert werden?