【发布时间】:2020-06-23 06:06:09
【问题描述】:
这让我大吃一惊。
以下是foo.py:
#!/usr/bin/env python
import sys
print(sys.executable)
有人可以解释在 bash 中运行以下命令的以下结果吗?
~$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-slackware-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
~$ ./foo.py
/usr/bin/python
~$ unset PATH
~$ ./foo.py
~$ PATH=
~$ ./foo.py
03:03:35 ~$ export PATH=""
03:03:42 ~$ ./foo.py
/usr/bin/env: ‘python’: No such file or directory
【问题讨论】:
-
您刚刚导出了一个空的
PATH,这是您的可执行文件所在的位置,您还期待别的吗? -
问题不明显。但问题是尽管“未设置”PATH,python 是如何执行的。当 PATH 为空时,'env' 不会执行 python 脚本。
-
是的,抱歉,我应该制定得更好,但正如@agathodaimon 所说。
标签: python bash environment-variables exec shebang