检测哪个shell调用了Python脚本[关闭]

6yjfywim  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(126)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

2天前关闭。
这篇文章是编辑并提交审查2天前.
Improve this question
我正在为特定的东西构建一个定制的fetch tool。我想用纯Python制作这个工具。
如何检测哪个shell调用了脚本?这是一个难题,因为我正在调用脚本中的脚本来检测shell。例如,os.getenv("SHELL")之类的Python代码无论如何都会导致/bin/bash
我还尝试了这些命令行选项:

  • getent passwd USERID-->始终打印Bash
  • echo $0-->打印/bin/sh
  • readlink /proc/$$/exe-->始终打印Readlink
arknldoa

arknldoa1#

在Linux上,要检测Python解释器的父进程,可以用途:

os.readlink(f'/proc/{os.getppid()}/exe')

如果你的Python解释器是直接由shell调用的(这是不保证的!)通过常规的fork/exec过程(不是直接的exec就地替换--同样,不能保证!),你会看到它返回那里。

相关问题