打开终端时,设置环境shell。如果我然后键入" csh"它开始在bash终端中运行一个c shell作为程序。我的问题是,从python脚本,我如何检查以确定在启动python脚本之前是否已执行csh。
感谢
答案 0 :(得分:1)
您可以使用
检查shell环境import os
shell = os.environ['SHELL']
然后,您可以确保shell
设置为/bin/csh
答案 1 :(得分:0)
您可以使用os.getppid()
查找parent PID和ps
来查找命令的名称:
import subprocess
import os
ppid = os.getppid()
out = subprocess.check_output(['ps', '--format', '%c', '--pid', str(ppid)])
print(out.splitlines()[-1])
% csh
% script.py
csh
% bash
(dev)13:53:04 unutbu@buster:~% script.py
bash
请注意,父进程可能不是shell。如果我从emacs内部启动的IPython会话中运行代码,那么父代是emacs:
In [170]: ppid = os.getppid()
out = subprocess.check_output(['ps', '--format', '%c', '--pid', str(ppid)])
print(out.splitlines()[-1])
In [172]: emacs