Linux执行.sh文件必学技巧?,或,Shell脚本如何提升Linux效率?,或,如何安全运行.sh脚本?

基础执行方法

添加执行权限(关键步骤)

   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 -lps 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权限执行

安全注意事项

  1. 来源可信原则

    • 禁止执行未知来源脚本(可能含 rm -rf / 等恶意命令)。
    • 下载脚本后先审计:cat script.shless script.sh
  2. 最小权限原则

    • 非必要不使用 sudo 执行,避免提权攻击。
    • chown 限制脚本归属:chown root:admin script.sh
  3. 沙箱测试

    • 在虚拟机或容器中测试新脚本:docker run -it --rm alpine ./test.sh

  • 核心步骤chmod +x./script.shbash 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

(0)
酷番叔酷番叔
上一篇 2025年6月14日 19:48
下一篇 2025年6月14日 20:07

相关推荐

  • Linux误删文件如何避免永久丢失?

    删除文件(不可逆操作)rm 文件名 # 删除单个文件rm file1 file2 # 批量删除文件rm -i *.log # 交互式确认删除(推荐新手)危险警告:rm -rf /目录名 可强制递归删除目录(含子目录),绝对禁止对根目录执行此操作!安全删除目录rmdir 空目录名 # 仅删除空目录rm -r 目录……

    2025年8月7日
    11300
  • Linux如何打开硬件端口?

    在Linux中,硬件端口(如串口/网络端口)通过设备文件访问,需结合权限管理(如chmod)和专用工具(如minicom、socat)操作。

    2025年6月15日
    12800
  • Linux如何彻底卸载yum包管理器及残留文件?

    在Linux系统中,yum(Yellowdog Updater Modified)是Red Hat系列发行版(如CentOS、RHEL、Fedora等)常用的包管理工具,用于软件包的安装、更新、卸载等操作,在某些特殊场景下(如替换为dnf、定制化系统、或解决依赖冲突),用户可能需要卸载yum,需要注意的是,卸载……

    2025年9月30日
    9100
  • linux 如何使用虚拟机共享磁盘

    在Linux系统中,使用虚拟机共享磁盘是常见的操作,主要用于多虚拟机间数据共享、数据迁移或构建集群环境,本文将详细介绍两种主流的共享磁盘实现方式:本地文件系统共享和网络iSCSI共享,涵盖环境准备、配置步骤、注意事项等内容,帮助读者快速上手实践,环境准备在开始配置前,需确保宿主机和虚拟机满足基本要求:宿主机:推……

    2025年9月27日
    9700
  • Win7下如何彻底删除Wubi安装的Linux系统?

    在Windows 7系统中,通过Wubi(Windows Ubuntu Installer)安装的Linux系统,其与传统双系统安装方式不同,它并非在独立分区中运行,而是将Linux系统文件以虚拟磁盘的形式存储在Windows的分区(通常是C盘)中,并通过修改Windows启动管理器添加启动选项,删除Wubi安……

    2025年8月24日
    10100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信