Linux 我可以省略shell脚本第一行中“shebang”的完整路径吗?
我经常看到/第一行shell脚本中的usr/bin/env bash 在macos上省略/usr/bin/part似乎效果不错: !环境狂欢 回声悠悠Linux 我可以省略shell脚本第一行中“shebang”的完整路径吗?,linux,bash,Linux,Bash,我经常看到/第一行shell脚本中的usr/bin/env bash 在macos上省略/usr/bin/part似乎效果不错: !环境狂欢 回声悠悠 我可以在所有其他类似Unix的平台上执行此操作吗?在任何地方都不支持使用没有完整路径的解释器。在许多情况下,内核执行shebang处理,内核通常不知道环境变量,包括PATH。所以它需要一个完整的路径来找到解释器 这就是为什么/使用usr/bin/env bash—bash由env定位和执行,因此它允许bash位于路径中的任何位置,而只要求/usr
我可以在所有其他类似Unix的平台上执行此操作吗?在任何地方都不支持使用没有完整路径的解释器。在许多情况下,内核执行shebang处理,内核通常不知道环境变量,包括PATH。所以它需要一个完整的路径来找到解释器 这就是为什么/使用usr/bin/env bash—bash由env定位和执行,因此它允许bash位于路径中的任何位置,而只要求/usr/bin/env位于已知位置。你不能只使用它!猛击!env bash,因为内核不知道在哪里可以找到它们 使用普通解释器有时可能会起作用——这意味着shebang处理是由一些了解环境的东西完成的,很可能是由活动shell本身完成的,而不是由内核完成的 对于类似的问题也有很好的答案:
一个简单的!env bash在Ubuntu 18.04和bash 4.4.19中对我不起作用/usr/bin/env bash可以工作。我希望shebang需要一个完整的路径;如果对名称执行路径查找,那么首先就不需要使用env。