web-dev-qa-db-ja.com

WindowsBashとVisualStudio Code:実行タスクとしてbashを起動するにはどうすればよいですか?

visualStudioコードからWindowsBashを実行タスクとして実行するにはどうすればよいですか?

これを行うためのtasks.jsonでの私の多くの試みのいくつかを次に示します。

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

RunShellScript.batには次の行しかありません:bash myShellScript.sh。 cmdを最初から開いてその行を入力すると、実行されます。また、ファイルをダブルクリックするだけでも完全に実行されます。ただし、VSCodeから起動すると、この出力は終了するまでハングします。

試行番号2:

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

上記のように、これもハングします。

試行番号3:

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

これは私に与えます:

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

また、これらのケースのいくつかでは、"isShellCommand"変数をtrueとfalseに設定して実験しましたが、役に立ちませんでした。

誰かがこれを行う方法を知っていますか?

8
atzero

私も同じことができる方法を探していました。

andlrc-私はあなたの2つのオプションを試しましたが、どちらもうまくいかないようです。問題は、Visual StudioCodeがbashを実行するコンテキストでbashが認識されないことにあるようです。私はさまざまなアプローチを試しました。

  • "コマンド": "C:/Windows/System32/bash.exe"
  • 「コマンド」:「bash」
  • "コマンド": "bash.exe"

何かがうまくいったら、私は努力を続けて投稿します。

編集:了解しました。この男性の功績- https://aigeec.com/using-windows-10-anniversary-bash-with-visual-studio-code/

要約すると、私は64ビットオペレーティングシステムを使用しているということです。つまり、bash.exeはC:\ Windows\System32にあります。ブログ投稿が示唆しているようにbash.exeをSysWOW64にコピーすると、Visual Studio Codeのデフォルトのビルドアクション(Ctrl + Shift + B)が期待どおりに実行されます。

これは少し厄介な回避策のようです-MSFTで提起して、それについて何かできることがあるかどうかを確認する価値があるでしょう。

編集:要求された私のtasks.jsonは次のとおりです:

{
  // 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にはコマンドが1つだけ含まれています。 'gulp' :-)しかし、基本的には好きなものをそこに入れることができます。タスクのさまざまなテープに対応するために、いくつかの.shスクリプトを使用できると思います

Sysnativeの使用に応じて、残念ながらそれを理解していないようで、ビルドタスクは実行されません。

7
Jason Dunbar

新しくインストールされたbashがインストールされているWindows10マシンでは、これは問題なく機能します。

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

commandとしてのshellscript.shのShebangバージョンは私には機能しません。

bash -c "<command>"を使用して、任意のコマンドを実行することもできます。

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

enter image description here

2
Daniel Imms

試してください:

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

または、ファイルにシバンを追加することもできます。

#!/bin/bash

次に、スクリプトへのパスを記述します。

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