我正在编写一个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()获取父进程的可执行文件的路径。


根据您的设置,您可能需要一些其他路径,但这对于最简单的情况应该足够了。

07-26 09:29
查看更多