Команда запуска Python csh

В последнее время я хочу использовать скрипт Python для установки среды в Linux. Это одна строка моего кода:

p = subprocess.call(['/bin/csh', '-c', "source setup.csh"])

Мой файл setup.csh находится ниже:

add questa10.2b
add ds5-2013.06
setenv MODELSIM modelsim.ini

Но когда я запускаю свой python, он показывает, что файлы получены на экране, но оказывается, что я должен набрать себя в командной строке.

Как я мог решить эту проблему? Кто-нибудь может помочь мне с этим?

1 ответ

Вы создаете новый csh Оболочка как подпроцесс, а затем запускает ваши команды внутри этой оболочки, которая затем завершается. Команды не запускаются и не влияют на родительскую оболочку, в которой работает Python. Когда вы просто запускаете команды самостоятельно, они влияют на текущую оболочку.

Если вам нужно, чтобы эти настройки сохранялись в вашей текущей оболочке после завершения работы Python, лучше всего в общем случае source setup.csh вместо того, чтобы помещать это в сценарий Python. Если другим дочерним процессам скрипта Python нужны переменные среды, вы можете изменить os.environ,

Другие вопросы по тегам