linux的sh命令
linux的sh命令详细介绍
在 Linux 系统中,sh(Bourne Shell)是最早的 Unix shell 之一,由 Stephen Bourne 开发,用于解释和执行命令及脚本。以下是关于sh命令的详细介绍:
一、基本功能
- 命令解释器
sh作为 shell,负责解析用户输入的命令,调用系统内核执行程序,并处理输入输出。可以直接在终端输入sh进入交互式 shell 环境,退出用exit。 - 脚本执行
sh用于运行 shell 脚本,脚本文件通常以.sh结尾(非强制),语法遵循 POSIX 标准,确保跨系统兼容性。
执行脚本的方式:
bash脚本路径./脚本路径
二、常用选项
通过选项可调整sh的行为,常用选项包括:
-e:遇到错误(非零退出码)时立即退出脚本,避免错误继续执行。-x:调试模式,执行时输出每行命令(类似 “打印日志”),用于排查脚本错误。-n:仅语法检查,不执行脚本(验证脚本是否有语法错误)。-c:从命令行参数中读取并执行命令(常用于动态生成命令)。bash-s:从标准输入(stdin)读取命令(配合管道使用)。
三、内置命令
sh包含一系列内置命令,无需外部程序即可执行,例如:
- 流程控制:
if、case、for、while等(语法较基础,遵循 POSIX 标准)。 - 操作命令:
echo(输出文本)、cd(切换目录)、exit(退出 shell)、readonly(设置只读变量)等。 - 变量操作:支持环境变量(如
$PATH)和自定义变量(无需$声明,赋值用变量=值)。
四、与其他 Shell 的区别
- sh vs bash
sh是 POSIX 兼容的最小化 shell,语法严格遵循标准,可移植性强,但功能有限。bash(Bourne-Again SHell)是sh的超集,兼容sh语法并扩展了大量特性(如命令补全、数组、函数、正则表达式等),是大多数 Linux 发行版的默认 shell。- 在 Linux 中,
/bin/sh通常是bash或dash(Debian 系默认)的符号链接。例如:bash/bin/sh
- 兼容性
编写跨平台脚本时,应使用sh语法(避免bash特有的功能,如[[条件判断、let算术运算等),确保在所有 POSIX 兼容的 shell(如dash、mksh)中运行。
五、示例脚本
一个简单的sh脚本(hello.sh):
bash
!"
"
执行方式:
bash
hello.sh
六、注意事项
- 脚本开头
始终使用#!/bin/sh作为脚本开头(shebang 行),确保脚本被正确解析。 - 路径问题
sh默认搜索$PATH中的命令,若执行自定义程序,需指定完整路径或确保其在$PATH中。 - 安全模式
非交互模式下(如运行脚本),sh不会加载用户配置文件(如.bashrc),环境变量需显式设置。
总结
sh是 Linux 系统中用于执行 POSIX 标准 shell 脚本的基础工具,适合编写简单、跨平台的自动化脚本。如需复杂功能(如交互式操作、高级变量处理),建议使用bash。理解sh的核心语法和兼容性,能帮助你编写出更健壮的脚本。