Python-检查终端shell是否从环境shell更改

时间:2016-02-05 17:30:26

标签: python linux

打开终端时,设置环境shell。如果我然后键入" csh"它开始在bash终端中运行一个c shell作为程序。我的问题是,从python脚本,我如何检查以确定在启动python脚本之前是否已执行csh。

感谢

2 个答案:

答案 0 :(得分:1)

您可以使用

检查shell环境
import os
shell = os.environ['SHELL']

然后,您可以确保shell设置为/bin/csh

答案 1 :(得分:0)

您可以使用os.getppid()查找parent PIDps来查找命令的名称:

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