запустить python скрипт в текущей оболочке - PullRequest
0 голосов
/ 26 января 2020

Когда мне нужно запустить скрипт bash, который запускает cd somedir, чтобы повлиять на текущую оболочку, я запускаю его с . scriptname. Однако, если scriptname является сценарием python даже с #!/usr/bin/env python3 в первой строке, он не работает, кажется, он ожидает, что сценарий будет bash. Как я могу заставить его работать со python скриптами (или любым другим языком с соответствующим шебангом)?

1 Ответ

0 голосов
/ 26 января 2020

Это невозможно.

Единственное, что может повлиять на текущую среду процесса, - это сам процесс. Поскольку текущая оболочка bash, единственное, что может быть выполнено, что может повлиять на среду bash, - это то, что может запускаться самой bash. Этим «чем-то» являются утверждения, интерпретируемые bash. Поскольку bash не поддерживает интерпретацию и выполнение операторов python, это невозможно.

Обычный способ обойти это - вывести из сценария python правильно экранированные операторы присваивания, которые бы назначали среду переменные. Тогда вывод вашего скрипта будет eval обработан bash. Вот, например, как eval "$(docker-machine ...)" работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...