获取 Bourne shell 的搜索结果

获取 Bourne shell 的搜索结果

所以,Linux 中有很多类型的 shell...

Linux 中不同类型的 Shell

Bourne Shell (sh) ...
GNU Bourne-Again Shell (bash) ...
C Shell (csh) ...
Korn Shell (ksh) ...
Z Shell (zsh)

我有一个项目,我必须为 Bourne shell 编写一个脚本,从 shebang 开始#!/bin/sh

但每当我使用谷歌来了解一些细节时,我总是会得到大量的结果bash,我怀疑可以与它一起使用sh, 但不总是...

所以我想告诉 Google,“不!只提供原始 Bourne shell 的东西!”。但人们不会在大多数网页中输入字符串“Bourne shell”,因此 Google 无法直接帮助我解决此问题。

添加"sh"对我的搜索查询没有多大帮助,它匹配.sh文件扩展名,并且匹配bash

添加"#!/bin/sh"我的搜索查询是有些有帮助 - 但我只会在脚本中看到结果,有时简单的答案会显示为终端命令(然后我们可以调整以在脚本中使用)。

我知道不会有任何“银弹”完美的解决方案,但本着“提示和技巧”的精神,你们中的任何人会建议聪明的方法来缩小我的结果范围,就像我想要的那样吗?

或者是使用少数权威 Bourne shell 文档源的唯一解决方案?如果有,是哪些?

答案1

您很可能实际上对历史上的 Bourne shell(大多数当前的 UNIX 系统上并不常见)感兴趣,而是对实现当前的 POSIX 规范对于sh外壳。

也可以看看:

  • 目前接受的答案关于 U&L 问题“sh 兼容”是什么意思?详细描述了 Unix shell 的历史和“谱系”。

  • 您正在使用的系统上的命令将显示该系统上 shellman sh的手册。sh这将是一个实现 POSIX 语法和语法的 shell,可能通过更改 shell 的方式来实现通常情况下如果使用自己的名称调用,则会表现出行为(例如,当调用为 时,会执行bash和操作)。zshsh

答案2

根据我的经验,如果您正在寻求有关如何使用#!/bin/shshell 执行特定操作的帮助,您可以在 Google 查询前面添加以下内容之一:

  • POSIX- 它将引导您讨论如何在 POSIX 兼容 shell 中实现给定功能,或在 shell 中以 POSIX 兼容方式实现更多 POSIX 不需要的功能,例如 Bash。 (通常你最终会在 https://unix.stackexchange.com

  • 短跑- dash 是 /bin/sh Ubuntu,它是最流行的桌面 Linux 发行版。它由 cron 和其他使用 /bin/sh 运行命令的工具使用,因此已经提出并回答了很多问题

  • 忙碌盒- busybox 带有自己的 shell,它不像 Bash 或 ZSH 那么大,所以如果某些东西在 busybox shell 中工作,它也应该与您本地的极简 /bin/sh 一起工作,无论它是什么。

答案3

我想说的是解决这个问题的最佳方法:

常识

虽然这听起来很明显或粗鲁,但您可能会问“什么常识?”:

  • bashsh有时在某些发行版上有符号链接
  • sh有时是ash(busybox)的符号链接
  • bash脚本通常在 下工作正常(某些语法除外)sh,反之亦然(与ash-相同sh
  • 尝试一下。 (从字面上看,因为任何片段是否有错误可能并不明显,除非您使用shellcheck或有更多经验)
  • 尝试不同的关键字组合(这是显而易见的,但在不使这篇文章更长的情况下更难详细解释)
  • 尝试不同的搜索引擎(大多数都有相似的结果,但并非总是如此,如果有的话)精确的相同的结果,相同的关键字)

您也可以将上述内容应用于其他 shell。只要毫不犹豫地使用try您找到的任何片段/代码(我找到-xset -x用于调试并shellcheck在执行此操作时提供有用的帮助)。

当然,当您有疑问或偶然发现问题时,仍然建议您使用每个 shell 的相关文档。

其他资源:

尝试是学习的一部分。祝你好运!

答案4

在常见的 Linux 发行版中,我认为大多数(例如 CentOS 和 Arch)都使用 Bash 作为/bin/sh.主要的例外是 Debian 和 Ubuntu(及其衍生版本),它们使用 Dash。 Ubuntu 还有一个有用的 wiki 页面,标识了最常见的“Bashisms”:https://wiki.ubuntu.com/DashAsBinSh

请注意,原来的Bourne shell 与 Dash 等实现的 POSIX shell 略有不同。如果不明确查找,您将无法在 Linux 系统上找到它,例如传家宝贝壳

相关内容