linux脚本直接运行必须具备执行权限并正确调用:先用chmod +x添加权限,再通过./script.sh(需shebang)、bash script.sh(无需权限)或source script.sh(在当前shell执行)三种方式运行;常见问题包括权限缺失、shebang错误、dos换行符等,可用ls -l、head -1、dos2unix排查。

Linux 脚本要能直接运行,必须有执行权限,而且得用对方式调用。没权限时输脚本名会报 Permission denied;没写 shebang(比如 #!/bin/bash)或解释器路径不对,也可能执行失败或行为异常。
确认并添加执行权限
Linux 默认不给新创建或下载的 .sh 文件执行权。先检查当前权限:
ls -l script.sh
如果输出中没有 x(比如显示 -rw-r--r--),就说明缺执行权限。用 chmod 添加:
-
chmod +x script.sh—— 给所有者、所属组、其他用户都加执行权(最常用) -
chmod u+x script.sh—— 只给文件所有者加执行权 -
chmod 755 script.sh—— 等价于rwxr-xr-x,所有者可读写执行,组和其他人可读可执行(推荐用于一般脚本)
运行脚本的三种可靠方式
加完权限后,有三种主流运行方法,适用场景不同:
-
带路径直接执行:确保在脚本所在目录,输入
./script.sh。注意开头的./不可省略,否则系统会在$PATH里找,通常找不到。 -
显式调用解释器:不用改权限,直接运行
bash script.sh或sh script.sh。适合调试阶段或临时执行,尤其当脚本 shebang 写错或想强制用特定 shell 时。 -
在当前 shell 中执行(source):用
source script.sh或. script.sh。它不会开新进程,脚本里的变量、函数、环境修改会保留在当前终端里,适合加载配置或定义别名。
关键细节不能漏
光加 x 权限还不够,还得注意几个隐性条件:
- 脚本第一行最好有正确的 shebang,例如
#!/bin/bash或#!/usr/bin/env bash,否则系统可能用/bin/sh解释,导致语法报错(比如用了[[ ]]或数组) - 脚本文件本身得有读权限(
r),否则即使有x也执行不了 ——chmod +x默认保留原有读写权限,一般没问题 - 如果是从 Windows 传过来的脚本,可能含 DOS 换行符(
\r\n),导致#!/bin/bash^M报错。可用dos2unix script.sh修复,或用sed -i 's/\r$//' script.sh
常见错误怎么快速排查
运行失败时,按顺序检查这几项:
- 用
ls -l script.sh看有没有x - 用
head -1 script.sh确认 shebang 是否存在且路径正确 - 用
which bash或readlink -f /bin/sh核实解释器真实路径 - 加
echo $?查上一条命令退出码,0 表示成功,非 0 是错误











