/bin/sh
是
bash
,但是,当开始时
/bin/SH
,它以POSIX模式启动。根据
猛击
手册页,在POSIX模式下:
-
函数名必须是有效的shell'name's。也就是说,它们可能不是
包含字母、数字和下划线以外的字符,以及
不能以数字开头。用无效函数声明函数
名称在非交互式shell中导致致命的语法错误。
关于如何解决这类问题的注释:
-
在终端命令行,我执行
/bin/sh --version
查看相关信息。它打印了226; GNU bash,版本3.2.57(1)-发行版(x86_-apple-darwin17)_。
-
然后我提到
猛击
手册页,使用命令
man bash
. 由于这很长,您可能更喜欢将副本保存到文件中,并在首选文本编辑器中查看它。原始的
man
输出包括陈旧的下划线和退格。您可以通过执行
man bash | col -b > file.txt
.
-
在手册页中,我搜索了__sh__(作为一个完整的单词,而不是对那些字母的原始搜索,因为它们是许多不相关单词的一部分)。这很快揭示了bash在以sh开始时的行为不同,它以posix模式开始。
-
进一步搜索__posix_显示了在posix模式下不同的内容列表。