egr*_*grr 4 shell bash shebang
#!python3
print("Hello")
Run Code Online (Sandbox Code Playgroud)
我发现这段代码在我的终端中运行良好。但每个人都这样做#!/path/to/file或#!/usr/bin/env command。
有什么理由避免#!command在 shebang 行中使用?
Ste*_*itt 13
一般情况下,无路径 shebang 假定 shebang 中的命令位于当前目录中。更一般地说,非绝对 shebang 是相对于执行脚本的进程的当前目录来解释的。
\n仅当脚本从某些 shell(至少是 Zsh,但不是 Bash)启动时,当前目录中命令为 \xe2\x80\x99t 的无路径 shebang 才起作用,并且它之所以起作用是因为 shell 提供了帮助。当脚本运行时,执行失败,但规则是shell 认为它是一个脚本时尝试运行该脚本;Zsh 在其路径中查找 shebang 命令,但 \xe2\x80\x99s 不是标准的。
\n具有无路径 shebang 命令的脚本将无法在任何其他上下文中运行。
\n编写PATH基于 - 的 shebang 的惯用方法是使用/usr/bin/env,正如您提到的:
#! /usr/bin/env python3\nRun Code Online (Sandbox Code Playgroud)\n或者,对于某些版本env,
#! /usr/bin/env -S python3 --\nRun Code Online (Sandbox Code Playgroud)\n以避免以破折号开头的脚本路径出现问题。
\n