我知道这样的 shebang 行:
#!/bin/sh
但我发现我也可以像这样使用 shebang 行:
#!/usr/bin/env python3
这让我很困惑,有人可以向我解释一下 Linux 将如何处理这个吗?
最佳答案
env
是 Unix 程序的名称。如果您阅读手册 (man env
),您可以看到使用它的一种方法是 env COMMAND
,在您的情况下,COMMAND
是python3
.
根据手册,这将
Set each NAME to VALUE in the environment and run COMMAND.
单独运行 env
将显示设置的 NAME 和 VALUE:
$ env
TERM=xterm-256color
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
…
因此,/usr/bin/env python3
是设置PATH
(以及所有其他 NAME+VALUE 对)的指令,然后运行 python3
,使用 PATH
中包含 python3
可执行文件的第一个目录。
关于linux -/usr/bin/env 在 Linux shebang 行中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793040/