基础执行方法
添加执行权限(关键步骤)
chmod +x your_script.sh # 赋予脚本可执行权限
- 原理:Linux文件默认无执行权限,
chmod +x
修改权限位。 - 验证权限:
ls -l your_script.sh
查看是否包含-rwxr-xr-x
。
直接执行脚本
./your_script.sh # 当前目录下执行 /home/user/script.sh # 绝对路径执行
- 注意:若提示
Permission denied
,返回步骤1检查权限。
通过解释器调用(无需权限)
bash your_script.sh # 使用Bash解释器 sh your_script.sh # 使用系统默认Shell(可能是Bash或Dash)
- 适用场景:临时执行或调试未授权脚本。
进阶场景与技巧
脚本调试模式
bash -x your_script.sh # 打印每条命令及结果
- 输出示例:
+ echo 'Hello World'
→ 定位错误行号。
后台执行与日志
nohup ./script.sh > output.log 2>&1 & # 后台运行,输出重定向到日志
- 查看进程:
jobs -l
或ps aux | grep script.sh
传递参数
./sum.sh 10 20 # 脚本内通过 $1=10, $2=20 获取参数 ```示例: ```bash #!/bin/bash result=$(( $1 + $2 )) echo "Sum: $result"
常见问题解决
错误:/bin/bash^M: bad interpreter
- 原因:脚本在Windows创建,含
\r\n
换行符。 - 修复:
dos2unix your_script.sh # 转换换行符 # 或手动处理: sed -i 's/\r$//' your_script.sh
错误:command not found
- 检查项:
- 脚本首行声明解释器:
#!/bin/bash
(或#!/usr/bin/env bash
)。 - 命令路径是否正确(如
./lib/
需写为绝对路径)。
- 脚本首行声明解释器:
权限继承问题
- 以其他用户身份执行:
sudo -u username ./script.sh # 指定用户 sudo ./admin_script.sh # root权限执行
安全注意事项
-
来源可信原则:
- 禁止执行未知来源脚本(可能含
rm -rf /
等恶意命令)。 - 下载脚本后先审计:
cat script.sh
或less script.sh
。
- 禁止执行未知来源脚本(可能含
-
最小权限原则:
- 非必要不使用
sudo
执行,避免提权攻击。 - 用
chown
限制脚本归属:chown root:admin script.sh
。
- 非必要不使用
-
沙箱测试:
- 在虚拟机或容器中测试新脚本:
docker run -it --rm alpine ./test.sh
。
- 在虚拟机或容器中测试新脚本:
- 核心步骤:
chmod +x
→./script.sh
或bash script.sh
。 - 安全第一:始终验证脚本内容,避免直接运行网络来源脚本。
- 灵活运用:参数传递、后台执行、调试模式可应对复杂需求。
引用说明基于Linux内核文档(kernel.org)、GNU Bash手册(gnu.org)及Linux权限管理标准(IEEE Std 1003.1),操作建议通过Ubuntu 22.04、CentOS 7及更高版本验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4495.html