使用/usr/bin/env与硬路径的Python shebang有什么区别?

76 投票
1 回答
25352 浏览
提问于 2025-04-16 15:59

我以前常用这个开头符号

#!/usr/bin/env python

什么时候使用

#!/usr/bin/python

它们之间到底有什么具体的区别呢?

1 个回答

96

#!/usr/bin/python 是固定写死的,始终会运行 /usr/bin/python,而 #!/usr/bin/env python 则会根据你当前环境中的默认设置来运行相应的 python(比如它会考虑 $PATH 这个环境变量,你可以用 which python 命令来查看将会使用哪个 python 解释器)。

第二种写法(#!/usr/bin/env python)更受欢迎,因为它不依赖于特定的安装方式。比如说,它可以在使用 virtualenv 的环境中正常工作,或者在没有 /usr/bin/python 的系统上运行,比如只有 /usr/local/bin/python 的情况。

撰写回答