百度
360搜索
搜狗搜索

linux下的sh命令详解详细介绍

在 Linux 系统中,sh(Bourne Shell)是最早的 Unix shell 之一,由贝尔实验室的 Stephen Bourne 开发,目前大多数 Linux 发行版中的sh通常是指向其他 shell(如 bash、dash)的符号链接(symlink)。以下是关于sh命令的详细解析:

一、基本概念

  • 本质sh是一个命令解释器,用于解析和执行用户输入的命令或脚本。
  • 文件路径:通常位于/bin/sh,可通过ls -l /bin/sh查看其实际指向(如bashdashksh)。
  • 特点:轻量、兼容性强,遵循 POSIX 标准,适合编写跨平台的 shell 脚本。

二、基本用法

1. 直接运行命令

在终端中输入sh后回车,进入交互式 shell 环境,输入命令即可执行:
bash

$ 

sh$

sh$

2. 执行 shell 脚本

bash

 选项 脚本文件路径

  • 示例:执行当前目录下的script.sh脚本:bash
     script.sh

三、常用选项

sh支持通过选项修改行为,常用选项如下:

选项 描述
-a 导出所有变量(等同于export),供子 shell 使用。
-c 从命令行参数中读取并执行命令(后接待执行的命令字符串)。
-e 若命令执行失败(返回非零状态码),立即退出脚本(严格模式)。
-n 仅语法检查,不执行脚本(用于调试脚本语法错误)。
-x 调试模式,执行时打印每条命令及其参数(等同于set -x)。
-s 从标准输入(stdin)读取命令并执行(常用于管道或重定向)。
--help 显示帮助信息(部分实现可能不支持,需查看具体 shell 文档)。
--version 显示 shell 版本信息。

示例

  • 执行命令字符串:bash
      

  • 调试脚本script.sh:bash
      script.sh

四、内置命令

sh包含以下常用内置命令(区别于外部命令,如lscp):

1. 基础命令

命令 描述
echo 输出文本(支持-n不换行,-e解析转义字符如\n\t)。
cd 切换目录(如cd ~cd ..)。
exit 退出当前 shell(可带参数exit N表示退出状态码)。
pwd 显示当前工作目录。
set 设置 shell 选项或变量(如set -e开启严格模式,set --清除位置参数)。
unset 删除变量或 shell 选项(如unset var删除变量,unset -f func删除函数)。

2. 变量与参数

  • 变量赋值var=value(注意等号前后不能有空格)。
  • 位置参数$0(脚本名)、$1~$9(第一个到第九个参数)、$@(所有参数列表)。
  • 特殊变量
    • $#:参数个数。
    • $?:上一条命令的退出状态码(0 表示成功,非 0 表示失败)。
    • $$:当前 shell 的进程 ID(PID)。

3. 流程控制

  • 条件判断:使用test命令或[ ]符号,语法如下:
    sh
      条件  

    命令

    条件

    命令

    命令

    常用条件操作符:

    • 文件测试:-f(文件存在且为普通文件)、-d(目录存在)、-x(文件可执行)。
    • 数值比较:-eq(等于)、-ne(不等于)、-gt(大于)。
    • 字符串比较:= (相等)、!=(不等)、-z(空字符串)。

  • 循环结构

    • for循环:sh
            

    • while循环:sh
            

      count

五、脚本编写基础

1. 脚本开头(Shebang)

建议在脚本第一行指定解释器,确保脚本可独立执行:
sh

2. 注释

#开头的行是注释,如:
sh

3. 执行权限

给脚本添加执行权限后,可直接运行:
bash

 +x script.sh

./script.sh

六、
sh与其他 Shell 的区别

特性 sh(POSIX 兼容) bash(GNU 增强版) dash(轻量实现)
兼容性 严格遵循 POSIX 标准 支持更多扩展功能(如数组、函数、命令补全等) 比 bash 更轻量,部分特性简化
默认指向 通常指向 bash 或 dash 独立二进制文件 常见于 Debian/Ubuntu 等系统
语法扩展 不支持复杂特性 支持[[ ]](( ))、通配符扩展等 部分语法更严格(如不支持let命令)

七、注意事项

  1. 跨平台性:使用sh编写脚本时,应避免依赖 bash 特有的语法(如let[[),确保符合 POSIX 标准。
  2. 性能dashbash更快,适合作为系统脚本的解释器(如 Debian 的/bin/sh指向dash)。
  3. 调试:通过-n(语法检查)和-x(跟踪执行)选项定位脚本错误。

总结

sh是 Linux 系统中最基础的 shell 之一,适合编写简洁、跨平台的脚本。尽管功能不如bash强大,但其轻量性和 POSIX 兼容性使其在系统脚本、初始化脚本中广泛应用。学习sh的核心是掌握 POSIX 标准语法,包括变量、条件判断、循环和内置命令,这也是理解其他 shell(如 bash、zsh)的基础。

阅读更多 >>>  linux虚拟机怎么用,linux虚拟机怎么用命令创建文件

网站数据信息

"linux下的sh命令详解"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux下的sh命令详解的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!