Notepad++无法直接运行远程脚本,必须通过“编辑+上传+SSH执行”三步联动;NppFTP仅同步文件不执行命令,需用WinSCP配置后置SSH命令或本地Git Bash调试,并确保chmod、LF换行、权限及路径正确。

Notepad++ 本身不能运行远程服务器上的脚本,它只能编辑和上传文件;真正执行脚本必须靠 SSH 命令触发 —— 所以“运行”本质是“编辑 + 上传 + SSH 执行”三步联动,缺一不可。
为什么直接保存后脚本不自动执行
很多人以为用 NppFTP 保存文件就等于“运行”,结果改完 deploy.sh 一保存,远程服务毫无反应。这是因为:
- NppFTP 只做 SFTP 文件同步,不执行任何命令,连
chmod +x都不会帮你加 - 即使你手动在终端里
ssh user@host './deploy.sh',也可能报错/bin/bash^M: bad interpreter(换行符问题)或Permission denied(缺少执行权限) - 脚本里用的路径、环境变量、当前工作目录,和你在 Notepad++ 里想象的很可能不一致
用 WinSCP + 自动执行命令替代 NppFTP
如果你真需要“保存即运行”,NppFTP 不是合适工具;WinSCP 的 call 功能更可靠:
- 在 WinSCP 中设置“编辑器关联”为 Notepad++,双击远程
.sh文件自动打开编辑 - 勾选 Keep remote file up to date 实现保存即上传
- 在传输设置里添加后置命令:
call ssh user@host "cd /path && chmod +x script.sh && ./script.sh" - 注意:需提前配置免密 SSH(
ssh-copy-id),否则每次都会卡在密码输入
本地调试时用 NppExec 调 Git Bash 运行脚本
别把所有逻辑都堆到远程跑 —— 先在 Windows 本地用 Git Bash 快速验证脚本逻辑是否正确:
- 安装 NppExec 插件后,执行命令:
cd "$(CURRENT_DIRECTORY)" && "C:\Program Files\Git\bin\bash.exe" --noprofile --norc -i "$(FULL_CURRENT_PATH)" -
--noprofile --norc很关键:跳过 Git Bash 的用户配置,避免本地环境干扰脚本行为 - 确保脚本第一行是
#!/bin/bash(不是#!/bin/sh或带 Windows 回车的#!/bin/bash^M) - Notepad++ 中菜单 → Edit → EOL Conversion → Unix (LF),否则
^M错误必现
远程执行前必须检查的三个硬性条件
哪怕配置全对,以下三点任一缺失都会让脚本静默失败或报错:
-
chmod +x script.sh:Linux 下./script.sh要求可执行位,仅bash script.sh可绕过,但很多脚本依赖$0解析路径,必须用./ - Shebang 行必须是 LF 结尾:Windows 编辑器默认 CRLF,
^M会破坏解释器路径识别 - SSH 用户对目标目录有读、写、执行权限:比如
/var/www通常不允许普通用户写入,得用sudo或换目录
最容易被忽略的是工作目录 —— 你从 Notepad++ 保存的路径,和 SSH 执行时的 pwd 几乎从来不一样。别依赖相对路径,要么写绝对路径,要么在脚本开头显式 cd "$(dirname "$0")"。


















