首页 > 解决方案 > 获取父shell的路径

问题描述

我正在编写一个 Python 程序,它需要知道执行脚本的 shell 的可执行位置。例如,我希望找到/usr/bin/env/{bash,zsh,fish}或以其他方式。我该怎么做?

不幸的是,我不能给出一个最小的、完整的和可验证的例子,因为我不知道从哪里开始。我一直无法在网上找到任何东西。

psutil至少我已经调查过了。我试图获取父进程的 PID,但我刚刚获得了当前 Python 进程的 PID。

标签: pythonpython-3.xprocessparentpid

解决方案


使用psutil应该或多或少简单:

import psutil
print(psutil.Process().parent().exe())

让我解释一下代码:

  • Process(), 没有参数,这将为正在运行的进程创建一个Process对象,即 Python 解释器。
  • .parent()得到 parent Process(),那可能是外壳。
  • .exe()获取父进程的可执行文件的路径。

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


推荐阅读