

BashスクリプトをWindows／IntelliJ IDEAから実行したいと思います。  
BashはWindowsの一部分ではないと知ってはいますが、Gitがあり、これにBashが付いています。  
このBashへのパスを明示的に指示します（常に「C:\Program Files\Git\bin\bash.exe」）。

[![画像の説明をここに入力](https://i.stack.imgur.com/7BEJK.png)](https://i.stack.imgur.com/7BEJK.png)

下記のボタン

[![画像の説明をここに入力](https://i.stack.imgur.com/FBHfp.png)](https://i.stack.imgur.com/FBHfp.png)

で実行しますと、

[code]

    発生場所 行:1 文字:37
    + ... n\bash.exe" "D:/IntelliJ IDEA/InHouseDevelopment/XXX/ ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    式またはステートメントのトークン '"D:/IntelliJ IDEA/InHouseDevelopment/XXX/NNN/test.bash"' を使用できません。
        + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : UnexpectedToken
    
[/code]

というエラーが発生します。

原因を教えていただけますでしょうか。

メッセージと論理だけ判断すると、原因はファイル内ではなく、生成されるコマンドにあります。

[code]

    "C:\Program Files\Git\bin\bash.exe" "D:/IntelliJ IDEA/XXX/NNN/test.bash"
    
[/code]

`"D:/IntelliJ IDEA/XXX/NNN/test.bash"`文字列に下記が良くないでしょうか。


CC BY-SA 4.0
2023-07-14T05:44:44.970
95608
2023-07-15T00:21:16.350
16876
question
windows bash intellij-idea git-bash
GitBashへのパスを指定してもIntelliJ IDEAからBashスクリプトが実行できません（「式またはステートメントのトークン」エラー）


出力を見る限り、IntelliJ から PowerShell が実行され、PowerShell 上でコマンド実行が失敗しています。

PowerShell
では実行するコマンドをフルパスで表記してクォートした場合、そのままだと文字列リテラルとして扱われてしまいコマンド実行と解釈されません。このため 2
つ目の引数が引数と解釈されずに UnexpectedToken エラーとなっています。

これを回避するには、[call operator `&`](https://learn.microsoft.com/en-
us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-7.2#call-
operator-) にクォートした文字列を渡してあげる方法があります。

[code]

    & "C:\Program Files\Git\bin\bash.exe" "D:/Path/to/test.bash"
    
[/code]

また PowerShell ではバックティック ``` で空白をエスケープできるので、以下でも実行できます。

[code]

    C:\Program` Files\Git\bin\bash.exe "D:/Path/to/test.bash"
    
[/code]

参考: Learn/PowerShell/about_Parsing <https://learn.microsoft.com/en-
us/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.2>

IntelliJ からこのどちらかが実行されるように設定すると良いでしょう。

また、cmd.exe であればクォートした文字列のままでコマンドとして認識されるので、困らないのであれば IntelliJ のデフォルトのシェルを
cmd.exe に変更するという方法もあります: <https://pleiades.io/help/idea/settings-tools-
terminal.html>

※ところで Windows 11 であれば WSL 2 が利用できるので、わざわざ Git Bash を使わなくても良いかもしれません。


CC BY-SA 4.0
2023-07-15T00:21:16.350
95624
2023-07-15T00:21:16.350
19110
95608
answer