python - 获取父shell的路径
问题描述
我正在编写一个 Python 程序,它需要知道执行脚本的 shell 的可执行位置。例如,我希望找到/usr/bin/env/{bash,zsh,fish}
或以其他方式。我该怎么做?
不幸的是,我不能给出一个最小的、完整的和可验证的例子,因为我不知道从哪里开始。我一直无法在网上找到任何东西。
psutil
至少我已经调查过了。我试图获取父进程的 PID,但我刚刚获得了当前 Python 进程的 PID。
解决方案
使用psutil
应该或多或少简单:
import psutil
print(psutil.Process().parent().exe())
让我解释一下代码:
Process()
, 没有参数,这将为正在运行的进程创建一个Process
对象,即 Python 解释器。.parent()
得到 parentProcess()
,那可能是外壳。.exe()
获取父进程的可执行文件的路径。
根据您的设置,您可能需要一些额外的路径,但这对于最简单的情况应该足够了。
推荐阅读
- php - 如何修复 add_action?
- ruby - 将 Gem 部署到 geminabox 服务器的 Rake 发布任务挂起
- android - Android - 每次我尝试打开它时应用程序崩溃
- jquery - Ajax - 如何检查 CSS 类的返回 HTML?
- java - 二进制搜索具有不同字长的文件
- android - AndroidX 迁移后找不到符号 DataBindingComponent
- docker - docker-ee-selinux 与 2:container-selinux-2.21-1.el7.noarch 冲突
- json - Jest 测试套件未能运行:SyntaxError: Unexpected token u in JSON
- arrays - 如何找到设置了数组长度和最大整数值的整数数组的所有唯一值
- kubernetes - Google Cloud 中的 Kubernetes 问题卡在 ContainerCreating 状态