这是因为 nginx 二进制文件未在系统 PATH 中,导致 shell 找不到可执行文件;源码安装默认路径为 /usr/local/nginx/sbin/nginx,需手动添加该路径至 PATH 或使用绝对路径调用。

这是因为 nginx 二进制文件没在系统 PATH 里,shell 找不到可执行文件。源码安装默认放到 /usr/local/nginx/sbin/nginx,而这个路径不在 Ubuntu 默认的搜索路径中(比如 /usr/bin、/usr/sbin)。
确认 nginx 是否真的装好了
先别急着改环境变量,先验证安装结果:
- 运行
ls -l /usr/local/nginx/sbin/nginx,看文件是否存在且有执行权限(应显示-rwxr-xr-x) - 如果目录不存在,说明
make install没成功,或你指定了别的--prefix路径,用find /usr -name nginx 2>/dev/null查找真实位置 - 如果文件存在但权限不对,运行
sudo chmod +x /usr/local/nginx/sbin/nginx
把 nginx 路径加进 PATH 环境变量
最常用也最稳妥的做法是把 sbin 目录加入全局或用户级 PATH:
- 对所有用户生效:编辑
/etc/profile,末尾加一行:export PATH="$PATH:/usr/local/nginx/sbin" - 仅当前用户生效:编辑
~/.bashrc或~/.profile,同样加上面那行 - 保存后运行
source /etc/profile(或source ~/.bashrc)使改动立即生效 - 验证:执行
echo $PATH看是否包含该路径;再运行nginx -v测试命令是否可用
检查是否被其他安装覆盖或冲突
有时候系统里已有 apt 安装的 nginx,它会把二进制放在 /usr/sbin/nginx,而你源码安装的在 /usr/local/nginx/sbin/。两者可能共存,但 shell 默认只认前者(如果 PATH 里它排得更前):
- 运行
which nginx看当前调用的是哪个 - 运行
/usr/local/nginx/sbin/nginx -v直接调用,确认版本和功能正常 - 若想优先使用源码版,确保
/usr/local/nginx/sbin在 PATH 中比/usr/sbin更靠前(比如写成export PATH="/usr/local/nginx/sbin:$PATH")
临时使用或脚本调用不依赖 PATH
如果你只是偶尔调试或写启动脚本,不一定非要改环境变量:
- 直接用绝对路径运行:
/usr/local/nginx/sbin/nginx -t、/usr/local/nginx/sbin/nginx - 写 systemd 服务文件时,在
ExecStart=行明确指定完整路径,避免依赖 PATH - 创建软链接(不推荐长期用):
sudo ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/nginx,前提是/usr/local/bin已在 PATH 中


















