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
)。 - 无需执行权限。
- 脚本在当前Shell会话中运行,可修改当前环境变量(如
- 典型用途:加载环境配置(如
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安全基准指南。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/34813.html