【发布时间】:2019-11-28 15:59:02
【问题描述】:
我一直在 CentOS 7 上编写一些脚本,有时我会看到:
#!/bin/sh -
在第一行。查看sh 的手册页我在Special Parameters 下看到以下内容
- Expands to the current option flags as specified upon invocation,
by the set builtin command, or those set by the shell
itself (such as the -i option).
这到底是什么意思?我什么时候需要使用这个特殊的参数选项??
【问题讨论】:
-
如果您询问有关
/bin/sh的问题,请标记他们sh,而不是bash。即使您的sh是 由 bash 实现的,它在以该名称启动时也在兼容模式下运行。 -
我删除了
bash标签并用sh替换它 -
这是一个很好的问题,我在看书的时候也有同样的问题。接受的答案解决了我的问题。为了证明这一点,我已经尝试过:创建一个名为
-c的文件,第一行为#!/usr/bin/sh,更改路径:PATH=.,这样我就可以以-c而不是./-c运行该文件。运行文件:-c,命令-c变为/usr/bin/sh -c。因为-c是sh的一个选项,所以输出为:/usr/bin/sh: -c: option requires an argument。在此之后我将第一行更改为#!/usr/bin/sh -,并且输出什么都没有,意味着它运行正确(/usr/bin/sh - -c,-c被视为文件)。