GNU/Linux >> Linux の 問題 >  >> Linux

Python で親プロセスの環境を変更することは可能ですか?

bash eval ステートメントを使用して、Python スクリプトにシェル コードを出力させます

child.py:

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

親.sh

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

子プロセスが親プロセスの環境を変更することはできません。できる最善の方法は、シェル ステートメントを stdout に出力してからソースするか、親でソースするファイルに書き込むことです。


親プロセス (または他の既存のプロセスの環境) を変更するプロセスはありません。

ただし、変更された環境で新しいインタラクティブ シェルを作成することにより、新しい環境を作成できます。

アップグレードされた環境を使用し、既存の stdin、stdout、および stderr にアクセスし、その再初期化ダンスを実行するシェルの新しいコピーを生成する必要があります。

subprocess.Popen を使用して /bin/bash -i を実行するようなことをする必要があります .

したがって、元のシェルは Python を実行し、Python は新しいシェルを実行します。はい、多くのプロセスが実行されています。元のシェルと Python は、サブシェルが終了するのを待って正常に終了できるようにする以外には何もしていないため、それほど悪くはありません。


Linux
  1. テキストモードコンソールのフォントを変更しますか?

  2. 実行中のプロセスの環境を変更しますか?

  3. Linux でデフォルトのシェルを変更する方法

  1. Linux でデフォルトのシェルを変更する方法

  2. Unix で別のプロセスの環境変数を変更する方法はありますか?

  3. 混合シェルと python スクリプトは可能ですか?

  1. 親プロセスが終了したときの新しい親プロセス?

  2. シェル変数と環境変数の使用法の違いは?

  3. シェルで PYTHONPATH を取得するには?