GNU/Linux >> Znalost Linux >  >> Linux

Je možné změnit prostředí nadřazeného procesu v Pythonu?

Použil bych příkaz bash eval a nechal python skript vypsat kód shellu

child.py:

#!/usr/bin/env python
print 'FOO="A_Value"'

parent.sh

#!/bin/bash
eval `./child.py`

Pro žádný podřízený proces není možné změnit prostředí nadřazeného procesu. Nejlepší, co můžete udělat, je vygenerovat příkazy shellu na stdout, které pak získáte jako zdroj, nebo je zapsat do souboru, který je zdrojem v nadřazeném souboru.


Žádný proces nemůže změnit svůj nadřazený proces (nebo prostředí jakéhokoli jiného existujícího procesu).

Můžete však vytvořit nové prostředí vytvořením nového interaktivního prostředí s upraveným prostředím.

Musíte vytvořit novou kopii shellu, který používá upgradované prostředí a má přístup ke stávajícímu stdin, stdout a stderr a provede jeho reinicializační tanec.

Pro spuštění /bin/bash -i musíte udělat něco jako použití subprocess.Popen .

Původní shell tedy spouští Python, který spouští nový shell. Ano, běží vám spousta procesů. Ne, není to tak špatné, protože původní shell a Python ve skutečnosti nedělají nic kromě čekání na dokončení subshell, aby mohli také čistě ukončit.


Linux
  1. Změnit písmo konzoly v textovém režimu?

  2. CentOS / RHEL :Jak změnit přihlašovací shell uživatele

  3. Jak změnit výchozí prostředí v Linuxu

  1. Jak změnit výchozí shell v Linuxu

  2. Existuje způsob, jak změnit proměnné prostředí jiného procesu v Unixu?

  3. Jak nastavím pracovní adresář nadřazeného procesu?

  1. Změňte pracovní adresář v shellu pomocí python skriptu

  2. Je možný smíšený skript Shell a python?

  3. Jak změnit jazyk mého git?