gpt4 book ai didi

linux - 我可以在 shell 脚本的第一行省略 "shebang"的完整路径吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:03 26 4
gpt4 key购买 nike

我经常在 shell 脚本的第一行看到 #!/usr/bin/env bash

在 macOS 上省略 /usr/bin/ 部分似乎工作正常:

#!env bash

echo Yo

我可以在所有其他类 Unix 平台上这样做吗?

最佳答案

不支持使用没有完整路径的解释器。在许多情况下,内核进行 shebang 处理,内核通常不知道环境变量,包括 PATH。所以它需要一个完整的路径才能找到解释器。

这就是使用 #!/usr/bin/env bash 的原因 - bashenv 定位和执行,因此它允许 bash 位于 PATH 中的任何位置,而只需要 /usr/bin/env 位于已知位置。您不能只使用 #!bash#!env bash,因为内核不知道在哪里可以找到它们。

使用简单的解释器有时可能会奏效——这意味着 shebang 处理是由感知环境的东西完成的,很可能是由事件 shell 本身而不是内核完成的。

关于类似的问题也有很好的答案:

关于linux - 我可以在 shell 脚本的第一行省略 "shebang"的完整路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54515648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com