插件窝 干货文章 Linux系统能否直接执行.sh脚本?

Linux系统能否直接执行.sh脚本?

script 解释器 脚本 bash 993    来源:    2025-04-08

在Linux系统中,.sh脚本(Shell脚本)可以直接执行,但需要满足以下条件:


1. 脚本需有可执行权限

默认情况下,新建的脚本文件没有执行权限,需通过chmod命令添加:

chmod +x script.sh  # 为所有用户添加执行权限
chmod u+x script.sh # 仅为当前用户添加执行权限

2. 指定正确的解释器

脚本首行需声明正确的解释器(如#!/bin/bash),否则系统可能无法识别如何运行:

#!/bin/bash
echo "Hello, World!"

3. 执行方式

方法一:直接执行(需权限)

./script.sh  # 注意需在脚本所在目录,或使用绝对路径(如/home/user/script.sh)

方法二:通过解释器运行(无需权限)

bash script.sh   # 使用bash解释器
sh script.sh     # 使用sh解释器

方法三:添加到PATH环境变量(全局调用)

若需像命令一样直接运行,可将脚本所在目录加入PATH

export PATH=$PATH:/path/to/scripts  # 临时生效
echo 'export PATH=$PATH:/path/to/scripts' >> ~/.bashrc  # 永久生效(对当前用户)

常见问题排查

  1. 权限不足错误

    bash: ./script.sh: Permission denied
    

    解决:运行chmod +x script.sh

  2. 解释器路径错误

    bash: ./script.sh: /bin/bash^M: bad interpreter
    

    原因:脚本可能在Windows中编辑过,包含CRLF换行符。
    解决:运行dos2unix script.shsed -i 's/\r$//' script.sh

  3. 命令未找到

    bash: ./script.sh: command not found
    

    原因:未指定完整路径或脚本不在当前目录。
    解决:使用./script.sh(当前目录)或绝对路径。


总结

  • 可执行权限正确的解释器声明是直接运行.sh脚本的关键。
  • 通过./script.sh方式执行时,需确保文件路径正确且具有权限。
  • 调试脚本可使用bash -x script.sh查看执行过程。