Выполнение команды bash с подпроцессом python - PullRequest
1 голос
/ 12 апреля 2020

У меня есть команда в моем bash_profile, такая как id=12345, которую я определил следующим псевдонимом

alias obs="echo $id", так как идентификатор будет изменяться со временем.

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

import subprocess

subprocess.call('obs', shell=True, executable='/bin/bash')

subprocess.call(['/bin/bash', '-i', '-c', obs])

subprocess.Popen('obs', shell=True,executable='/bin/bash')

subprocess.Popen(['/bin/bash', '-c','-i', obs])

Однако ни один из них, похоже, не работает! Что я делаю не так!

1 Ответ

2 голосов
/ 12 апреля 2020

.bash_profile не читается Popen и друзьями.

Для вашего скрипта доступны переменные среды (через os.environ).

Вы можете использовать export в вашей оболочке Bash, чтобы экспортировать значение в качестве переменной среды, или используйте env:

export MY_SPECIAL_VALUE=12345
python -c "import os; print(os.environ['MY_SPECIAL_VALUE'])"
# or
env MY_SPECIAL_VALUE=12345 python -c "import os; print(os.environ['MY_SPECIAL_VALUE'])"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...