我知道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对)的指令,然后使用PATH中包含python3可执行文件的第一个目录运行python3.