2014-01-20 2 views
6

Мой скрипт устанавливает некоторую среду varrible, которая будет использоваться Make-файлами, поэтому, поскольку каждая оболочка, bash (экспорт для установки varriable) и tcsh (setenv), мне нужно получить правильную оболочку типа, откуда мы запустили python, я попытался использовать $ SHELL varrriable, но он всегда давал мне sh в качестве моей оболочки.Получение текущего типа оболочки из сценария python

Есть ли способ, я могу получить нужный тип оболочки из сценария python или всегда будет выводить «SH» в качестве переменной $ SHELL.

+0

Зачем вам нужна оболочка? 'subprocess. *' функции имеют аргументы для переменных среды! – ThiefMaster

+1

'$ SHELL' дает вам оболочку входа, а не текущую оболочку. Почему бы не указать конкретную оболочку в Makefile или использовать '#!'? – cdarke

+0

Мне нужно это, потому что разные пользователи могут иметь разные предпочтения оболочки, а скрипты должны обнаружить, из какой оболочки, пользователь ее вызвал, а затем на основе этого он должен вывести правильные данные varriables (setenv/export) для него. – Viks

ответ

5

Извините, что вернул это из мертвых, но я просто сделал это сам. Следующая должно дать вам путь к текущей оболочке:

from os import environ 
print(environ['SHELL']) 

Вы должны быть в состоянии заменить оболочку с любой переменной среды, которую вы ищете.

Смежные вопросы