我如何指定 Bourne shell(不是 sh)

How do I specify the Bourne shell (not sh)

我正在写一个脚本,我希望它以谍影重重 shell 开头。据我了解,以以下方式启动脚本:

#! /bin/sh

不会总是指定 Bourne shell,但无论 OS 链接到 /bin/sh。有没有办法明确指定伯恩?

谢谢!

原版 Bourne Shell 不是开源的,所以如果您还没有,那就是 SOL。

如果您已经有了它,只需将位置放在 shebang 中即可。

就这么简单。

取决于你所说的“谍影重重 Shell”是什么意思。

  1. 原版谍影重重Shell,我相信这不是你想要的:

    • 专有,非常有限,仅在某些真正的 UNIX 上可用 系统,例如 Solaris,源自原始的 AT&T UNIX 代码。
    • #!/bin/sh 是获得这个不可移植的方法 shell.
    • 它能够 运行 真正的遗留脚本,而且它很小, 是我心中唯一的资产。 今天的记忆使大小资产的吸引力降低。
  2. Modern shells 基于 Bourne shell 语法。相反,说 csh.

    • bash,ksh,zsh都是一些。 Bash 在 Linux 环境中很常见,是的,/bin/sh 倾向于 link 其中之一。

    • 要使用特定的 shell,请使用类似 which $SHELL 的内容 获取绝对路径。

    • #!/bin/env bash 较少依赖路径的改组 在不同的操作系统中找到。

      但是这个便携技巧有选择的风险 错误的 shell 如果 PATH 设置不够好并且 在 shell.

      上不允许参数,例如 -x

      有优势 的 PATH 能够控制您使用几个 shell 中的哪一个,如果 相同 shell 的不同版本可用,其中 ksh 是众所周知的。

因此,如果您需要更多帮助,您确实需要详细说明您所寻求的应用程序,以及您对“Bourne Shell”的定义。

Place a colon (:) on the first line. I used it on older systems (A/UX, SCO Unix, Interactive Unix System V Release 3.2 SVR3, circa 1989, comes to mind) as the first character in a file to denote a Bourne Shell script. It was also recognised by Thompson Toolkit's Korn Shell (DOS > v3.2 ). Allowed Unix programmers to shell program in the PC environment (DOS/WindowsNT).

是啊,我老了。 Unix程序员永远不会死,他们只是成为僵尸进程。