> 环境与工具 > sh

sh: 执行 Shell 脚本和命令解释器

`sh` 是 Bourne Shell 兼容的命令解释器。它用于执行脚本或接收交互式命令输入进行处理。在大多数 Linux 系统中,`/bin/sh` 是指向 `bash` 或 `dash` 等其他 Shell 的符号链接,并提供遵循 POSIX 标准的脚本执行环境。

概述

`sh` 是 Unix 和 Linux 系统中的一个基本 Shell,用于脚本执行和交互式命令处理。它严格遵循 POSIX 标准,因此用 `sh` 编写的脚本在不同系统上具有很高的兼容性。

主要特点

  • POSIX 兼容性:提供编写标准 Shell 脚本的基础
  • 脚本执行:执行文件中存储的命令序列
  • 交互式命令解释:直接接收用户输入的命令进行处理
  • 系统默认提供:大多数 Unix/Linux 系统都预装

主要选项

`sh` 提供多种选项,影响脚本的执行方式或调试。

脚本执行与调试

生成的命令:

请尝试组合命令。

描述:

`sh` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

执行脚本文件

sh my_script.sh

使用 `sh` 执行指定的 Shell 脚本文件。

直接执行命令字符串

sh -c "echo 'Hello from sh!' && ls -l"

使用 `-c` 选项通过 `sh` 执行用引号括起来的命令字符串。

以调试模式执行脚本

sh -x debug_script.sh

使用 `-x` 选项跟踪脚本执行过程进行调试。

从标准输入执行命令

echo "ls -a" | sh

通过管道将命令传递给 `sh` 执行。

发生错误时立即退出

sh -e error_prone_script.sh

设置脚本在发生错误时立即终止。

提示与注意事项

`sh` 是一个强大的工具,但理解它与其他 Shell 的区别很重要。

编写脚本时

  • 建议在脚本的第一行使用 `#!/bin/sh` 来明确指定该脚本由 `sh` 执行。
  • 其他 Shell(如 `bash` 或 `zsh`)的扩展功能(例如数组、高级模式匹配、`[[ ... ]]` 条件语句)可能在 `sh` 中无法工作,因此应仅使用 POSIX 兼容的语法。
  • 在调试时,`-x` 选项对于理解脚本流程和检查变量值非常有用。

兼容性

在大多数 Linux 发行版中,`/bin/sh` 是指向 `dash`(Debian/Ubuntu 系列)或 `bash`(Red Hat/Fedora 系列)的符号链接。因此,`sh` 脚本将在相应链接 Shell 的 POSIX 兼容模式下运行。这意味着它的行为可能与 `bash` 脚本不同。


相同类别命令