根本原因是Windows未安装或未正确配置bash环境,需通过WSL、Cygwin或MSYS2提供bash可执行文件并将其路径加入系统PATH,而非Notepad++设置问题。

Notepad++ 里运行 Bash 脚本报“不是内部或外部命令”
根本原因不是 Notepad++ 设置错了,而是 Windows 找不到 bash 可执行文件。先在 CMD 里直接敲 bash --version —— 如果也报错,说明系统没装 Bash 环境,或者没加进 PATH。
Windows 下真正能跑原生 Bash 的只有两种路径:
- WSL(推荐):安装 WSL2 + 任意发行版(如 Ubuntu),
bash命令会自动注册到 Windows PATH(前提是安装时勾选“添加到 PATH”) - Cygwin 或 MSYS2:手动把
bin/目录(如C:\cygwin64\bin)加进系统 PATH,然后重启 Notepad++(只重启 CMD 不生效)
别用 Git Bash 的 sh.exe 或 bash.exe 直接填路径——Notepad++ 的 Run 菜单不支持带空格或括号的路径,且无法自动处理其依赖 DLL。
Run → Run(F5) 里怎么填命令才能正确执行 .sh 文件
不能只写 bash "$(FULL_CURRENT_PATH)",否则中文路径、空格、换行符都会导致失败。必须包裹一层 cmd /c 并显式切换工作目录:
cmd /c "cd /d "$(CURRENT_DIRECTORY)" && bash -i "$(FULL_CURRENT_PATH)"
-
cd /d强制切换到脚本所在目录,避免相对路径失效 -
bash -i启用交互模式,让read、select等命令能正常响应(不用-i时 stdin 会被截断) - 双引号必须完整包裹整个命令字符串,缺一不可
- 如果脚本含中文输出,前面加
chcp 65001 >nul &&,变成:cmd /c "chcp 65001 >nul && cd /d "$(CURRENT_DIRECTORY)" && bash -i "$(FULL_CURRENT_PATH)"
为什么 .sh 文件打开后没有语法高亮
Notepad++ 默认不认 .sh 扩展名,哪怕文件开头写了 #!/bin/bash 也没用。必须手动绑定语言:
- 菜单栏 → 设置 → 样式配置器
- 左侧语言列表中选
Shell(不是 Bash,Notepad++ 没这个语言项) - 右侧“用户自定义扩展名”框里填:
sh bash zsh ksh(注意:不加点号,空格分隔) - 点“保存”,然后**完全退出 Notepad++ 再重开**——缓存不刷新,新扩展名不会生效
检查是否成功:打开一个 deploy.sh,看顶部菜单“语言”项是否显示为 Shell,而不是 Normal text。
脚本执行后卡住或输出乱码
常见于含 read、echo -e "\u2714" 或 UTF-8 emoji 的脚本。问题不在 Notepad++,而在 Windows 控制台默认编码和 stdin 绑定方式:
- 乱码:确保 Notepad++ 当前文件编码是
UTF-8 无 BOM(编码 → UTF-8 无 BOM),且命令里已加chcp 65001 - 卡住(尤其
read -p):bash -i是必须的;若仍无效,改用NppExec插件执行:bash -i "$(FULL_CURRENT_PATH)",并勾选“使用不同控制台” - 换行符错误(
$'\r': command not found):脚本必须用 LF 换行(编辑 → EOL 转换 → Unix (LF)),不能用 Windows 默认的 CRLF
最稳妥的做法:所有 Bash 脚本统一用 WSL 终端开发+测试,Notepad++ 仅作编辑器,不承担执行职责——毕竟它本质是个文本编辑器,不是 IDE。


















