执行.sh文件前需先chmod +x赋权,否则报Permission denied;若仍失败,检查#!/bin/bash路径、Windows换行符或改用bash install.sh绕过权限限制;安装前务必审查脚本内容,警惕sudo、/etc、/usr等敏感操作。

直接执行 .sh 文件前必须加 chmod +x
Linux 不像 Windows 那样靠后缀识别可执行性,.sh 文件默认只是普通文本,双击或直接输入 ./install.sh 会报错:Permission denied。这不是脚本写错了,是权限没给。
- 先用
ls -l install.sh看权限,如果最前面没有x(比如显示-rw-r--r--),就不能直接运行 - 补权限:运行
chmod +x install.sh,再试./install.sh - 如果提示
No such file or directory,但文件明明存在——大概率是脚本第一行#!/bin/bash指向的解释器不存在,或者用了 Windows 换行符(^M),用dos2unix install.sh转一下
用 bash install.sh 绕过权限和路径问题
不想改权限、也不确定当前目录是否在 $PATH 里?直接调用解释器更稳妥。这招不依赖文件可执行位,也避免 ./ 相对路径引发的 cwd 误判。
-
bash install.sh:强制用bash解释,适合含 Bash 特有语法(如[[ ]]、数组)的脚本 -
sh install.sh:走 POSIX 兼容模式,如果脚本里用了source或$(())等非标准写法,可能失败 - 注意:
bash install.sh中的install.sh必须是相对或绝对路径,不能只写install.sh(除非它在$PATH里)
安装类 .sh 脚本常偷偷改系统,得盯住 sudo 和 /tmp
很多第三方 .sh 安装包(比如 Node.js 官方安装脚本、某些闭源 SDK)会自动下载二进制、写入 /usr/local、改 /etc 下配置,甚至加开机启动项。不看清楚就一路 sudo ./install.sh,等于把 root 权限交给一段黑盒代码。
- 先用
head -n 20 install.sh或less install.sh扫一眼开头,重点找sudo、/usr、/etc、systemctl、curl | bash这类危险组合 - 如果脚本解压后往
/tmp写东西,记得安装完手动清空,有些脚本不会自清理 - 真要
sudo,优先用sudo bash install.sh而不是sudo ./install.sh,避免当前目录被恶意利用
运行卡住或无声退出?检查 echo、set -e 和终端交互
有些 .sh 安装脚本默认静默,没进度条也没提示,看起来像卡死;另一些则在出错时直接退出,连错误信息都不吐——这往往是因为启用了严格模式或关闭了输出。
- 加
-x参数调试:bash -x install.sh,每行命令执行前都会打印出来,方便定位卡在哪一步 - 如果脚本开头有
set -e,任何一条命令返回非 0 就终止,而某些命令(比如grep查不到东西)天然返回 1,导致提前退出 - 需要交互的脚本(比如让你按回车继续),在非交互环境(如重定向输入、CI 环境)下会挂起,加
-y或--no-confirm参数(如果有)绕过,否则得模拟输入:echo -e "\n" | bash install.sh










