概述
`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` 脚本不同。