当前位置:首页 > Linux > 正文

怎样在Linux执行脚本文件

在Linux中执行脚本需先赋予可执行权限: chmod +x 脚本名,然后可通过路径执行: ./脚本名,或用解释器直接运行: bash 脚本名

脚本执行前的准备工作

  1. 创建脚本文件
    使用文本编辑器(如 nanovim)创建脚本文件,扩展名通常为 .sh(非强制)。
    示例:创建一个输出 “Hello World” 的脚本

    nano hello.sh
    #!/bin/bash
    echo "Hello World"
    • #!/bin/bash 称为 Shebang,指定脚本用Bash解释器执行(其他解释器如 #!/usr/bin/python3 用于Python脚本)。
  2. 赋予执行权限
    Linux文件默认无执行权限,需通过 chmod 命令授权:

    怎样在Linux执行脚本文件  第1张

    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)。
    • 无需执行权限。
  • 典型用途:加载环境配置(如 source ~/.bashrc)。

方法4:全局路径执行(任意目录调用)

  1. 将脚本移动到系统PATH包含的目录(如 /usr/local/bin):
    sudo cp hello.sh /usr/local/bin/hello
  2. 直接执行:
    hello  # 在任何目录输入脚本名即可
  • 验证PATHecho $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),确认解释器路径存在

安全注意事项

  1. 禁止随意执行来源不明的脚本

    反面脚本可能删除文件或窃取数据,始终审查代码后再运行。

  2. 最小权限原则
    • 用普通用户执行脚本,必要时通过 sudo 提权(避免直接以root运行)。
  3. 敏感信息保护
    • 不要在脚本中硬编码密码,使用环境变量或加密存储(如 AWS Secrets Manager)。

最佳实践

  1. 脚本调试
    • 使用 -x 参数打印执行过程:bash -x hello.sh
  2. 日志记录
    • 重定向输出到文件:./hello.sh > log.txt 2>&1
  3. 添加注释

    用 说明代码功能,便于维护。


Linux脚本执行依赖权限设置(chmod)和正确调用方式(路径执行、解释器调用等),关键步骤:

  1. 编写脚本并添加Shebang行;
  2. chmod +x 赋予权限;
  3. 通过 ./script.shbash script.sh 或全局路径执行。
    掌握这些方法可大幅提升运维效率,同时注意安全风险控制。

引用说明参考Linux官方文档(The Linux Documentation Project)及Bash手册(GNU Bash Manual),遵循POSIX标准,安全建议基于CIS Linux安全基准指南。

0