我的脚本设置了一定的环境,可供使物使用,因此,由于每个shell,bash(导出为set varrable)和tcsh(setenv),我需要获取正确的shell类型,从我们运行python的地方,我尝试使用$ shell varrrrrable,但它总是给我SH作为我的外壳。
是否有办法,我可以从Python脚本获得正确的外壳类型,或者它将始终输出" SH"作为$ Shell变量。
很抱歉将其从死里复活,但我自己做了。以下内容应为您提供当前外壳的路径:
from os import environ
print(environ['SHELL'])
您应该能够用所需的任何环境变量替换外壳。
对于用户从其登录外壳启动了不同类型的外壳,然后在该外壳中调用您的python脚本,您需要查看用于运行的可执行文件您脚本的父进程:
import os
os.path.realpath(f'/proc/{os.getppid()}/exe')
使用shellingham如下
import shellingham
try:
shell = shellingham.detect_shell()
except shellingham.ShellDetectionFailure:
shell = provide_default()
shell
将带有两个参数的元组,您可以使用shell[0]