如果我想在我的脚本中使用非 POSIX [[ 和 (( 测试形式,并且我声明了我想使用的 shell
#!/bin/bash
在我的脚本开头,直接调用 Bash shell 是否可以防止使用这些表单可能出现的任何问题?或者,如果未找到 hash-bang 中引用的 shell,是否会自动使用其他一些 shell?
最佳答案
如果找不到在 shebang 行指定的可执行文件(没有尝试其他),Linux 和 OS X 都将拒绝执行脚本。
您会看到类似 /bin/bash: bad interpreter: No such file or directory
的内容,退出代码将为 127。
但是,引用所需 shell 的一种更可移植的方法是如下编写 shebang 行(例如,对于 bash
):
#!/usr/bin/env bash
这样,只要 shell 可执行文件在 $PATH
中,就会被找到。
关于bash - POSIX 和 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553361/