上一篇
怎样在Linux执行脚本文件
- Linux
- 2025-06-22
- 6
在Linux中执行脚本需先赋予可执行权限: chmod +x 脚本名,然后可通过路径执行: ./脚本名,或用解释器直接运行: bash 脚本名。
脚本执行前的准备工作
-
创建脚本文件
使用文本编辑器(如 nano 或 vim)创建脚本文件,扩展名通常为 .sh(非强制)。
示例:创建一个输出 “Hello World” 的脚本
nano hello.sh #!/bin/bash echo "Hello World"
- #!/bin/bash 称为 Shebang,指定脚本用Bash解释器执行(其他解释器如 #!/usr/bin/python3 用于Python脚本)。
-
赋予执行权限
Linux文件默认无执行权限,需通过 chmod 命令授权:
chmod +x hello.sh # 为所有用户添加执行权限- 权限检查:ls -l hello.sh 显示 -rwxr-xr-x 表示权限已生效。
执行脚本的4种方法
方法1:直接路径执行(推荐)
./hello.sh
- 要求:
- 必须在脚本所在目录执行( 表示当前目录)。
- 需提前用 chmod 赋予执行权限。
- 适用场景:日常执行自定义脚本。
方法2:指定解释器执行(无需权限)
bash hello.sh # 使用Bash解释器 sh hello.sh # 使用系统默认Shell python3 script.py # 执行Python脚本
- 优点:跳过权限设置,直接调用解释器运行。
- 注意:脚本内Shebang行会被忽略,以命令指定的解释器为准。
方法3:source 或 . 命令(当前Shell环境执行)
source hello.sh # 或简写为 . hello.sh
- 特点:
- 脚本在当前Shell会话中运行,可修改当前环境变量(如 export VAR=value)。
- 无需执行权限。
- 典型用途:加载环境配置(如 source ~/.bashrc)。
方法4:全局路径执行(任意目录调用)
- 将脚本移动到系统PATH包含的目录(如 /usr/local/bin): sudo cp hello.sh /usr/local/bin/hello
- 直接执行: hello # 在任何目录输入脚本名即可
- 验证PATH:echo $PATH 查看路径列表。
常见错误与解决方案
| 错误提示 | 原因 | 解决方法 |
|---|---|---|
| -bash: ./hello.sh: Permission denied | 缺少执行权限 | chmod +x hello.sh |
| -bash: ./hello.sh: No such file or directory | 文件路径错误或编码问题 | 检查路径,用 file hello.sh 确认文件类型 |
| -bash: ./hello.sh: /bin/bash^M: bad interpreter | 脚本含Windows换行符(rn) | 运行 dos2unix hello.sh 转换格式 |
| 命令未找到(command not found) | Shebang路径错误或PATH未配置 | 检查Shebang行(如 #!/bin/bash),确认解释器路径存在 |
安全注意事项
- 禁止随意执行来源不明的脚本
恶意脚本可能删除文件或窃取数据,始终审查代码后再运行。

- 最小权限原则
- 用普通用户执行脚本,必要时通过 sudo 提权(避免直接以root运行)。
- 敏感信息保护
- 不要在脚本中硬编码密码,使用环境变量或加密存储(如 AWS Secrets Manager)。
最佳实践
- 脚本调试
- 使用 -x 参数打印执行过程:bash -x hello.sh。
- 日志记录
- 重定向输出到文件:./hello.sh > log.txt 2>&1。
- 添加注释
用 说明代码功能,便于维护。

Linux脚本执行依赖权限设置(chmod)和正确调用方式(路径执行、解释器调用等),关键步骤:
- 编写脚本并添加Shebang行;
- chmod +x 赋予权限;
- 通过 ./script.sh、bash script.sh 或全局路径执行。
掌握这些方法可大幅提升运维效率,同时注意安全风险控制。
引用说明参考Linux官方文档(The Linux Documentation Project)及Bash手册(GNU Bash Manual),遵循POSIX标准,安全建议基于CIS Linux安全基准指南。