我正在编写一个Python程序,该程序需要知道执行脚本的外壳程序的可执行位置。例如,我希望找到/usr/bin/env/{bash,zsh,fish}
或其他。我该怎么做?
不幸的是,由于我不知道从哪里开始,所以我无法给出一个简单,完整和可验证的示例。我一直无法在线找到任何东西。
至少我已经研究过psutil
。我试图获取父进程的PID,但是我只是获取了当前Python进程的PID。
最佳答案
使用psutil
应该差不多简单:
import psutil
print(psutil.Process().parent().exe())
让我解释一下代码:
Process()
,不带参数,这会为正在运行的进程创建一个Process
对象,即Python解释器。.parent()
获取父级Process()
,可能是外壳程序。.exe()
获取父进程的可执行文件的路径。根据您的设置,您可能需要一些其他路径,但这对于最简单的情况应该足够了。