Notepad++如何运行Shell脚本_WSL环境集成教学【方案】
作者:岁月静好秋意浓
时间:2026-06-27
浏览:0
Notepad++借助NppExec插件调用WSL执行Shell脚本,核心用wslpath-u转换Windows路径,以source绕过权限检查。需将换行符改为LF,取消安全保存防inode变更,注意WSL发行版名大小写敏感。
先说几个核心判断:Notepad++ 本身不运行 Shell 脚本,它只是个编辑器;真正执行脚本的是 WSL 或 Git Bash。关键不是“让 Notepad++ 运行”,而是“在编辑完后,用 WSL 环境立刻执行”。所有失败案例几乎都卡在这一步的路径、权限或换行符上。
怎么从 Notepad++ 直接调用 WSL 执行当前脚本
别用 cmd /k 或 bash -c 拼路径——WSL 对 Windows 路径解析极敏感,空格、反斜杠、驱动器大小写都会崩。正确做法是让 WSL 自己把 Windows 路径转成 Linux 路径:

- 安装 NppExec 插件(Plugins → Plugins Admin)
- Plugins → NppExec → Execute,输入以下命令(一行):
cd "$(CURRENT_DIRECTORY)" && wsl -e bash -c "source $(wslpath -u '$(FULL_CURRENT_PATH)')"
- 保存为
run_in_wsl,绑定快捷键(如 Ctrl+Shift+B) wslpath -u是核心:它把C:xxxscript.sh转成/mnt/c/xxx/script.sh,避免手动拼错- 用
source而非./script.sh,绕过执行权限检查(适合调试阶段)
为什么脚本在 WSL 里报 Permission denied 或 /bin/bash^M 错误
这两个错误出现频率最高,且常被当成“脚本写错了”——其实和代码无关:
Permission denied:WSL 默认不继承 Windows 的文件执行位。即使你在 Notepad++ 里改了内容,chmod +x不会自动生效。解决方法:
– 在 WSL 终端中手动执行chmod +x /mnt/c/path/to/script.sh
– 或在 NppExec 命令里加一句:wsl -e chmod +x $(wslpath -u '$(FULL_CURRENT_PATH)')/bin/bash^M: bad interpreter:Notepad++ 默认用 CRLF(rn)保存,^M就是r。WSL 的sh把它当非法字符。必须在 Notepad++ 中强制转为 LF:
– 编辑时菜单栏 → Edit → EOL Conversion → Unix (LF)
– 设置 → 首选项 → 新建 → UTF-8 无 BOM + 默认 EOL 设为 Unix
如何让 Notepad++ 编辑的文件实时被 WSL 感知(尤其用 inotify 或 git)
你点了保存,但 inotifywait 不触发、git status 不显示修改——这不是延迟,是 Notepad++ 的“安全保存”机制在作祟:
- Notepad++ 默认启用“以安全方式保存”:先写临时文件,再原子替换原文件。WSL 的
wsl$路径下,这会导致 inode 变更,旧句柄失效 - 解决方法:设置 → 首选项 → 备份与还原 → 取消勾选“以安全方式保存”(仅对 WSL 路径有效;本地 Windows 文件仍建议保留)
- 另一个隐藏原因:文件属主是
root,而当前 WSL 用户没写权限。Notepad++ 静默失败,不提示。可在 WSL 中运行ls -l $(wslpath -u '$(FULL_CURRENT_PATH)')确认权限,必要时sudo chown $USER:$USER
最易被忽略的点:WSL 发行版名称大小写敏感。wsl$Ubuntu-22.04 和 wsl$ubuntu-22.04 是两个不同路径;wsl -l -v 输出的名称必须一字不差地用于 wslpath 或 UNC 路径。别靠记忆,每次不确定就查一遍。
作者最新文章
3dmax动画制作教程:小球滚动实例与完整制作步骤
2026-09-22 15:56
PDF怎么解密去密码?处理前要注意哪些限制?
2026-09-02 19:09
魅族MX6(3GB RAM/全网通)忘了手机密码怎么办?
2026-08-25 13:53
我国大型民用水陆两栖飞机 AG600“鲲龙”T5 测试真机训练开飞
2026-08-25 10:20
美图创始人吴欣鸿:AI工具正在走向“自动驾驶”
2026-08-25 09:40
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































