Ни один процесс не может изменить свой родительский процесс (или любую другую существующую среду процесса).
Однако вы можете создать новую среду, создав новую интерактивную оболочку с измененной средой.
Вы должны создать новую копию оболочки, которая использует обновленную среду и имеет доступ к существующим stdin, stdout и stderr и выполняет танец повторной инициализации.
Вам нужно сделать что-то вроде использования subprocess.Popen для запуска /bin/bash -i
.
Итак, оригинальная оболочка запускает Python, который запускает новую оболочку. Да, у вас много запущенных процессов. Нет, это не так уж и плохо, потому что исходная оболочка и Python ничего не делают, кроме как ожидают окончания работы подоболочки, чтобы они также могли выйти чисто.