插件窝 干货文章 linux 命令 sh 是什么意思

linux 命令 sh 是什么意思

脚本 解释器 sh bash 713    来源:    2025-04-29

在 Linux 中,sh 是一个重要的命令行解释器(Shell),以下是详细说明:


1. sh 的本质

  • Shell 解释器sh(Bourne Shell)是 Unix/Linux 中最基础的命令行解释器,用于执行用户输入的命令或脚本。
  • POSIX 标准:现代系统中的 sh 通常是其他 Shell 的兼容模式(如 dashbash --posix),遵循 POSIX 标准。

2. 常见用途

(1) 直接执行命令

sh -c "echo Hello World"  # 通过 sh 执行单条命令

(2) 运行脚本

sh script.sh  # 使用 sh 解释器执行脚本
  • 脚本首行可指定 #!/bin/sh,表示用 sh 运行。

3. sh 与其他 Shell 的关系

Shell 名称 特点 sh 的关系
bash 功能扩展(支持数组、彩色输出等) 兼容 sh,但非纯 POSIX 模式
dash 轻量快速,严格 POSIX 兼容 许多系统中 /bin/sh 实际链接到 dash
zsh 交互式功能强大(如自动补全) 不默认兼容 sh,需配置

4. 重要注意事项

  • 脚本兼容性:若脚本首行为 #!/bin/sh,应避免使用 bash 特有语法(如 [[ ]]{1..10})。
  • 检查实际链接bash ls -l /bin/sh # 常见输出:/bin/sh -> dash(Ubuntu)或 /bin/sh -> bash(CentOS)
  • 性能差异dash(作为 sh)比 bash 更快,适合系统启动脚本。

5. 为什么需要 sh

  • 标准化:确保脚本在不同 Unix/Linux 系统间可移植。
  • 轻量级:减少系统脚本的资源占用。

6. 示例:shbash 的区别

# 在 sh 中会报错(非 POSIX 语法)
array=(1 2 3)  
echo ${array[1]}

# 在 bash 中正常
bash -c 'array=(1 2 3); echo ${array[1]}'

总结

  • 基础命令sh 是执行命令和脚本的入口。
  • 脚本兼容性:使用 #!/bin/sh 时需遵守 POSIX 规范。
  • 系统差异:不同 Linux 发行版的 /bin/sh 可能指向不同解释器。

如需功能扩展(如条件判断增强),建议显式使用 #!/bin/bash