You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2环境下Webstorm调用husky钩子报错:Syntax error: "(" unexpected及Illegal option -o pipefail

WSL2环境下Webstorm调用husky钩子报错:Syntax error: "(" unexpected及Illegal option -o pipefail

兄弟,我太懂你这种明明自己在bash终端操作,结果工具偷偷用sh执行脚本的憋屈了!这俩报错本质都是一个问题:Webstorm触发git钩子时,默认用了sh而不是bash,而sh不支持bash的一些高级语法(比如-o pipefail、某些括号写法)。给你几个实用的排查和解决步骤:

一、先确认当前钩子用的是什么shell

先实锤是不是sh在搞鬼:

  • 找到项目里的.husky/_/husky.sh文件,在开头加一行调试代码:
    echo "Current shell: $0" > /tmp/husky-shell.log
    
  • 然后在Webstorm里触发一次commit操作,之后打开WSL的bash终端,查看/tmp/husky-shell.log的内容,如果显示sh,那问题根源就找到了。

二、修改Webstorm的终端shell配置

Webstorm默认调用WSL时可能用的是sh,改成bash就行:

  1. 打开Webstorm的「Settings」(Windows/Linux按Ctrl+Alt+S)
  2. 找到「Tools → Terminal」
  3. 在「Shell path」里,把默认的wsl.exe改成wsl.exe -e bash,或者直接填WSL里bash的绝对路径/usr/bin/bash
  4. 保存设置后重启Webstorm试试

三、强制husky用bash执行钩子

如果Webstorm改了还是不行,直接给husky指定shell:

  • 要是你的husky是v7及以上版本,在项目根目录的.husky文件夹里新建一个config文件,内容写:
    export HUSKY_SHELL=/bin/bash
    
  • 要是用的旧版本husky,可以在package.json里加配置:
    {
      "husky": {
        "shell": "/bin/bash"
      }
    }
    

四、全局设置git用bash执行钩子

最后给git全局配置加个保险,确保git本身调用钩子时用bash:
打开WSL的bash终端,执行:

git config --global core.shell /bin/bash

按这几步来,应该就能解决那俩报错了!我之前就是这么搞定Webstorm和WSL husky的兼容性问题的~

备注:内容来源于stack exchange,提问作者Big Biggums

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:27:58