Установите политику выполнения для обхода вместо Unrestricted или RemoteSigned; этот учебник содержит более полные инструкции . Кроме того, если у вас возникли проблемы с использованием PowerShell для изменения политики, то автор покажет вам, как ее изменить в Regedit.
Ни один процесс не может изменить свой родительский процесс (или любую другую существующую среду процесса).
Однако вы можете создать новую среду, создав новую интерактивную оболочку с измененной средой.
Вы должны создать новую копию оболочки, которая использует обновленную среду, и имеет доступ к существующим stdin, stdout и stderr, и делает свой танец повторной инициализации.
Вам нужно сделать что-то вроде использовать subprocess.Popen для запуска /bin/bash -i
.
Таким образом, исходная оболочка запускает Python, который запускает новую оболочку. Да, у вас много процессов. Нет, это не так уж плохо, потому что исходная оболочка и Python на самом деле ничего не делают, кроме как ждать завершения работы подоболочки, чтобы они могли выйти также чисто.
Я бы использовал инструкцию bash eval и вывел скрипт python код оболочки
child.py:
#!/usr/bin/env python
print 'FOO="A_Value"'
parent.sh
#!/bin/bash
eval `./child.py`
Для любого дочернего процесса невозможно изменить среду родительского процесса. Лучшее, что вы можете сделать, это вывести инструкции оболочки в stdout, которые вы затем используете, или записать в файл, который вы используете в родительском.