notepad++调用git bash执行.sh脚本失败,主因是path未配置、换行符为crlf、缺少执行权限或命令格式错误;需将git bash路径加入系统path、在notepad++中设eol为unix(lf)、用chmod+x赋权或改用bash -c方式执行,并确保命令含引号与-i参数。

Notepad++ 调用 Git Bash 执行 .sh 脚本失败?先看报错是不是 'sh' is not recognized as an internal or external command
这根本不是 Notepad++ 的问题,而是 Windows 找不到 bash.exe。你在 CMD 里敲 bash --version 或 git-bash.exe,如果也报这个错,说明 Git Bash 没进系统 PATH,或者你填的路径压根不对。
必须做三件事:
- 确认 Git Bash 安装路径,比如常见的是
C:\Program Files\Git\bin\bash.exe或C:\Users\{user}\AppData\Local\Programs\Git\bin\bash.exe—— 别抄网上的默认路径,右键 Git Bash 快捷方式 → “属性” → “目标”里看真实路径 - 把该路径(注意是
bin目录,不是usr\bin)手动加进系统环境变量PATH,然后彻底关闭并重启 Notepad++(它启动时就固化了环境变量) - 在 Notepad++ 的
Run → Run (F5)里,命令必须写成:"C:\Program Files\Git\bin\bash.exe" --noprofile --norc -i "$(FULL_CURRENT_PATH)"—— 引号不能少,$(FULL_CURRENT_PATH)不能写成%FULL_CURRENT_PATH%或漏掉引号
脚本一运行就报 /bin/bash^M: bad interpreter: No such file or directory?换行符没切对
这是 Windows 编辑器保存的 \r\n(CRLF)被 Linux 解释器当成了命令的一部分。Notepad++ 默认用 CRLF,但 bash 只认 \n(LF)。
解决方法只有一个:菜单栏 → Edit → EOL Conversion → Unix (LF)。别信“自动识别”或插件自动转换 —— 它经常失效。
顺手检查下脚本第一行是不是标准的 #!/bin/bash(注意没有空格、没多字符、没 BOM)。如果用 UTF-8 with BOM 保存,也会触发类似错误。
脚本有输出但一闪而过?交互模式没开或窗口关太快
Git Bash 默认以非交互模式运行脚本,echo 输出完就退出,你看不见结果。
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
关键参数是 -i(interactive),它让终端保持打开状态。完整命令应为:"C:\Program Files\Git\bin\bash.exe" --noprofile --norc -i "$(FULL_CURRENT_PATH)"。
如果仍闪退,说明脚本末尾没阻塞。可在脚本最后加一行:read -p "Press Enter to continue...",或改用 NppExec 插件配合 npp_console 1 实时显示输出。
执行时报 Permission denied?Linux 权限机制在 Windows 上不生效,但 Git Bash 会模拟
Git Bash 基于 MSYS2,它会读取文件权限位。即使你在 Windows 上右键“属性”里看不到执行权限,Git Bash 也可能拒绝运行。
两种办法任选其一:
- 在 Git Bash 里手动加权限:
chmod +x /c/path/to/your/script.sh(注意路径要转成/c/...格式) - 更省事:在 Notepad++ 中,把运行命令改成
"C:\Program Files\Git\bin\bash.exe" --noprofile --norc -c "bash '$(FULL_CURRENT_PATH)'"—— 这样绕过直接执行,用bash显式解释,不依赖文件权限位
真正容易被忽略的是:Git Bash 对路径大小写敏感(哪怕 Windows 不敏感),script.SH 和 script.sh 是两个文件;另外,发行版名称(如 Ubuntu vs ubuntu)在 WSL 场景下也区分大小写 —— 但 Git Bash 没这问题,只管文件名本身。










