bash - POSIX 和 Bash 脚本

标签 bash shell unix operators

如果我想在我的脚本中使用非 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/

相关文章:

bash - 在远程计算机上运行bash脚本的一部分

linux - bash 脚本仅搜索目录特定文件类型

linux - shell脚本重命名文件夹中的文件保持顺序

arrays - Bash 获取唯一元素并过滤值

bash - 使用 bash 一个一个地读取 zip 文件中的文件

mysql - 确保脚本执行或在计划错过时踢掉它

用于过滤 git status 命令的 Linux Shell 脚本

scala - Spark shell : strange behavior with import

regex - Bash:使用正则表达式提取范围(也许是 sed?)

unix - sed 用条件替换字符串