私のシェルでは: export BLA=foo
それから echo $BLA
私は見る foo
予想通り。それからemacsをロードして M-!
シェルコマンドのために echo $BLA
そして、それは何か他のものに設定され、 bar
。それで私は走る M-x setenv
それを与える BLA
そして foo
プロンプトで、しかしエコーを行うとき、私はまだ見る bar
。なぜそうなるのでしょうか、どうすれば変更できますか?私が実行したいいくつかの環境変数に対してこれをしようとしています M-x compile
回答:
回答№1は6setenv
emacs起動プロセスの環境を変更します 後 値を設定します。実行中の子プロセスは影響を受けません。
したがって、 (setenv "FOO" "bar")
その後 M-x shell
(まだ実行中のシェルがない場合)は、環境変数「FOO」が「bar」に設定されたシェルを生成します。
回答№2の場合は1
Emacsを起動したシェルその環境のコピーをその子プロセス(Emacs)に引き渡します。これが「値がシェルからEmacsに送信される方法です。Emacsが継承環境で実行する変更は、Emacsプロセスの環境にのみ影響します」 。 Emacsの環境がシェルの環境に影響を与えることはできません。
情報をシェルに戻す必要がある場合は、一時ファイル、名前付きパイプ、ソケットなどのさまざまな手法を使用する必要があります。
Emacs自体の環境を確認したいだけなら、 M-x
getenv
変数を見る、または使用する M-!
echo $BLA
。これもsthを表示している場合は、おそらく特別なものがあります BLA
各コマンドの後に自動的にsthに設定されるか、またはまったく書き込みできません RANDOM
または類似。