/ / emacs内から環境変数を実際に変更/設定する方法-linux、bash、emacs、環境変数

実際にemacsから環境変数を変更/設定する方法 - linux、bash、emacs、環境変数

私のシェルでは: export BLA=foo それから echo $BLA 私は見る foo 予想通り。それからemacsをロードして M-! シェルコマンドのために echo $BLA そして、それは何か他のものに設定され、 bar。それで私は走る M-x setenv それを与える BLA そして foo プロンプトで、しかしエコーを行うとき、私はまだ見る bar。なぜそうなるのでしょうか、どうすれば変更できますか?私が実行したいいくつかの環境変数に対してこれをしようとしています M-x compile

回答:

回答№1は6

setenv 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 または類似。