2017-10-12 28 views
0

pythonからcshスクリプト(環境変数を作成または更新する)を実行しようとしましたが、環境変数はシェルに戻った後に更新されません。 なぜですか?どうすれば解決できますか?環境変数がPythonから更新されない

subprocess.call('script.csh',shell=True,executable="/bin/csh") 
+1

これはPythonの問題ではありません。親プロセスは子プロセスを継承しません。スクリプトを 'source'しない限り、シェルスクリプトで実行することさえできません。 –

+0

私はtcshを使用します。どういう意味ですか ?回避策を教えてもらえますか? @PM 2Ring – Alex

+1

回避策は、シェルスクリプトに環境変数を設定させ、今実行しようとしている方法ではなくPythonスクリプトを実行することです。あるいは、 'os.environ'を使ってPythonでそれらを設定できます。 – kindall

答えて

0

環境変数が文字列でなければならないこと

os.environ['YOUR_VARIABLE'] = "your_value" 

注意を使用し、pythonで環境変数を設定します。あなたがやりたいことができない理由のため

説明:

環境変数はプロセスあたりのメモリ空間に設定されています。 bash(またはあなたが持っているシェルがあれば)はプログラムを実行するときにfork()を使います。これは子プロセスなのでbashの変数を継承します。あなたのやろうとしていることは、子プロセスを作成し、@PM 2Ringのように、彼が親から継承するようにすることです。

関連する問題