基础执行方法
直接调用解释器(无需权限)
sh script.sh
- 原理:显式指定
sh
解释器执行脚本,即使文件无执行权限也可运行。 - 示例:
sh backup_script.sh # 执行备份脚本
赋予权限后执行(推荐)
chmod +x script.sh # 添加执行权限 ./script.sh # 通过路径执行
- 关键点:
chmod +x
修改文件权限(首次执行必需)。- 表示当前目录,避免系统误认
script.sh
为内置命令。
- 示例:
chmod +x install.sh && ./install.sh # 安装软件
指定绝对路径执行
/home/user/scripts/start_server.sh
- 适用场景:脚本位于固定目录(如
/usr/local/bin
),可直接通过完整路径调用。
高级执行方式
后台执行(不阻塞终端)
nohup ./monitor.sh & # 后台运行,关闭终端不中断
- 日志查看:输出默认保存到
nohup.out
。
使用其他解释器(如bash)
bash script.sh # 用bash替代sh执行
- 差异:
bash
比sh
功能更丰富(如数组支持),兼容性需注意。
远程执行脚本
ssh user@server 'sh -s' < local_script.sh # 本地脚本远程执行
- 安全提示:仅限受信任环境,避免密码泄露。
常见问题解决
权限错误:Permission denied
chmod +x script.sh # 补授权
路径错误:Command not found
- 原因:未指定路径(如遗漏)或脚本不在
$PATH
。 - 方案:
./script.sh # 当前目录 /full/path/to/script.sh # 绝对路径
格式问题:^M
或换行符错误
dos2unix script.sh # 转换Windows换行符(\r\n → \n)
语法错误:Syntax error
- 检查首行:确保Shebang正确(如
#!/bin/sh
)。 - 调试命令:
sh -x script.sh # 逐行显示执行过程
安全最佳实践
-
来源验证:
- 禁止执行未知来源脚本(可能含
rm -rf /
等恶意命令)。 - 下载脚本后检查内容:
cat script.sh # 审阅代码
- 禁止执行未知来源脚本(可能含
-
最小权限原则:
- 避免用
root
执行非必要脚本:sudo ./system_script.sh # 仅需提权时使用
- 避免用
-
环境隔离:
- 敏感操作使用沙箱(如
docker run -it ubuntu sh script.sh
)。
- 敏感操作使用沙箱(如
- 基础流程:授权(
chmod +x
)→ 执行(./script.sh
)。 - 复杂场景:后台运行用
nohup
,远程调用用ssh
。 - 安全第一:始终审查脚本内容,限制执行权限。
引用说明参考Linux官方文档(man7.org)及Unix Shell标准(IEEE Std 1003.1),实践方法基于Ubuntu 22.04/CentOS 7测试验证,安全建议遵循CIS Linux安全基准指南。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4548.html