【发布时间】:2019-04-06 13:26:00
【问题描述】:
我已经读过,如果你想以便携的方式使用 Bash,你应该使用 shebang:
#!/usr/bin/env bash
但现在我想知道:当我想明确声明我不依赖 Bash,而是编写了一个符合 POSIX 的脚本时,我应该使用:
#!/bin/sh
或者#!/usr/bin/env sh在这里也更可取?
【问题讨论】:
-
#!/usr/bin/env sh不是适得其反吗?如果/usr在单独的分区上,即使/usr没有挂载,#!/bin/sh的脚本也可以使用,而#!/usr/bin/env sh会失败,即使sh在/bin中也是如此。我同意这种情况很少见,但仍然如此。 -
确实,对于默认 shell(如 sh)可能有问题,但对于其他 shell(如 bash),它似乎是 necessary。
-
即使使用
bash,它也扩展了便携的定义。它所说的只是“使用任何名为bash的程序首先出现在您的路径中”。它没有说明bash的版本应该是什么(3.2?4.0?4.1?4.2?4.3?4.4?5.0?),甚至没有说名为bash的程序甚至是 重击。记录运行脚本所需的内容;让用户担心如何指定。