最近,我遇到了 Linux 命令 source
然后找到了 this answer关于它的作用。
我的理解是 source
执行传递给它的文件,它确实适用于一个简单的 shell 脚本。然后我尝试在 Python 脚本上使用 source
,但它没有用。
Python 脚本有一个 shebang(例如 #!/usr/bin/python
),我可以执行 ./python.py
,因为脚本有可执行权限。如果可以的话,source python.py
也应该可以吧?唯一的区别是 ./
在新的 shell 中执行,而 source
在当前的 shell 中执行。为什么它不适用于 .py
脚本?我在这里错过了什么吗?
最佳答案
您仍然没有完全理解 source
的作用。
source
确实从当前 shell 进程中的文件执行命令。它可以有效地执行此操作,就好像您将它们直接输入到当前的 shell 中一样。
这是必要的原因是因为当您运行一个 shell 脚本而不获取它时,它会产生一个子 shell — 一个新进程。当此进程退出时,当您返回到生成它的 shell 时,在该脚本中所做的任何更改都将丢失。
因此,您不能将 Python 源代码放入 shell,因为 Python 解释器始终是与您的 shell 不同的进程。运行 Python 脚本会产生一个全新的进程,当该进程退出时,其状态将丢失。
当然,如果您的 shell 实际上是 Python(我不推荐!),您仍然可以通过使用 import
“源”到它。
关于python - 采购 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577555/