前提条件:赋予脚本可执行权限
Linux默认禁止直接执行无权限的脚本,需先使用 chmod
命令添加权限:
chmod +x your_script.sh # 为所有用户添加执行权限 chmod u+x your_script.sh # 仅当前用户可执行
- 验证权限:
ls -l your_script.sh
输出中应有
-rwxr-xr-x
(x
表示可执行)。
执行脚本的四种方法
指定解释器直接运行
无需权限,通过解释器(如Bash、Python)调用脚本:
bash your_script.sh # 使用Bash执行 python3 your_script.py # 使用Python3执行
- 适用场景:临时执行、调试或脚本无执行权限时。
使用相对/绝对路径执行
需先赋予执行权限:
./your_script.sh # 相对路径(当前目录) /home/user/your_script.sh # 绝对路径
- 常见错误:
-bash: ./script.sh: Permission denied
→ 未用chmod +x
授权。
-bash: ./script.sh: No such file or directory
→ 路径错误或文件不存在。
通过 source
或 执行
脚本在当前Shell环境运行(而非子Shell),变量和函数会保留:
source your_script.sh . your_script.sh # 简写形式
- 典型用途:加载环境变量(如
.bashrc
)。
将脚本加入 PATH
全局执行
将脚本放入系统路径(如 /usr/local/bin
),即可直接输入脚本名运行:
sudo cp your_script.sh /usr/local/bin/your_script # 复制到PATH目录 your_script # 直接执行
- 查看PATH:
echo $PATH
常见问题与解决方案
-
Command not found
- 检查脚本路径是否正确。
- 确认脚本在
PATH
中,或使用完整路径。 - 确保首行包含 Shebang(如
#!/bin/bash
),指定解释器。
-
权限错误
- 用
chmod +x
授权(见第一部分)。 - 若在只读文件系统(如FAT32分区),需复制到Linux分区再授权。
- 用
-
脚本编码或格式问题
- Windows编辑的脚本可能有
^M
换行符错误:dos2unix your_script.sh # 转换格式
- 用
file your_script.sh
检查文件类型。
- Windows编辑的脚本可能有
安全最佳实践
- 验证脚本来源
- 仅运行可信来源的脚本(如官方文档或知名仓库)。
- 检查代码:
cat your_script.sh # 预览内容
- 限制权限
- 避免用
root
执行未知脚本:sudo -u regular_user ./script.sh # 指定普通用户运行
- 避免用
- 使用沙盒环境
测试高风险脚本时,用容器隔离:docker run -it --rm -v $(pwd):/scripts ubuntu bash /scripts/your_script.sh
高级技巧
- 调试脚本:
bash -x your_script.sh # 打印每条命令及结果
- 后台执行:
nohup ./your_script.sh & # 退出终端后仍运行
- 定时任务:
通过cron
定期执行:crontab -e # 添加行:0 * * * * /path/to/your_script.sh # 每小时执行
掌握脚本执行方法能大幅提升Linux操作效率,始终遵循最小权限原则,并优先理解脚本逻辑再运行,实践时建议从简单脚本开始,逐步过渡到复杂自动化任务。
引用说明:
- Linux权限机制参考 The Linux Documentation Project。
- Shebang规范详见 Unix Shebang – Wikipedia。
- 安全实践依据 Linux Foundation Security Guidelines。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10119.html