7

私の.bashrcには、次の行があります。

export SETTINGS=/home/user/settings.xml

Rをbashにロードすると、次のSys.getenv関数を使用してこの変数にアクセスできます。

Sys.getenv("SETTINGS")
"/home/user/settings.xml"

Emacs(Mx R)でRを開くと、設定は空になります。

Sys.getenv("SETTINGS")
""

私が試したこと:

  1. コンパイルのためにEmacsにbash環境変数を認識させる方法に基づいて、以下を.emacsに追加します か?

    ;; get environment vars from .bashrc
    (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS")))
      (setenv "SETTINGS" path))
    
  2. を使用してemacsでbashを開くM-x term

    echo $SETTINGS         # works
    R
    Sys.getenv("SETTINGS") #works
    
  3. ターミナルからemacsを開くと、期待どおりにSETTINGS変数が使用可能になります。/usr/bin/emacs23 %F(コマンドまたはのいずれかを使用して)アプリケーションメニューからemacsを開くemacsことはできません。

  4. Rをbashとemacsにロードしたときの出力を比較しますsession("env")が、(bash = <、emacs =>)以外に目立つものはありません。

    > INSIDE_EMACS=23.3.1,comint
    6d5
    < SETTINGS=/home/user/settings.xml
    9c8
    < SHLVL=1
    > SHLVL=0
    14a14
    > PAGER=cat
    16d15
    < PAGER=/usr/bin/pager
    19d17
    < COLORTERM=gnome-terminal
    25c23
    < WINDOWID=14680069
    > DESKTOP_AUTOSTART_ID=1020ce948b944a88113395253627645060000001863000
    < TERM=xterm
    > TERM=dumb
    

どちらでもいいですか

  1. emacs-essのR内からSETTINGSにアクセスする
  2. アクセスできる場所に設定をエクスポートしますか?
4

4 に答える 4

3

Rと自己定義の環境変数についてはわかりませんが、emacsのPATH変数をbashrcと同じ値に設定しました。私はあなたの問題に合わせてコードを修正し、それを試してみて、それが機能するかどうかを知らせてください。

;; set env variable in Emacs
(getenv "SETTINGS")
(setenv "SETTINGS" "/home/user/settings.xml")

元のコード(PATH用)は次のとおりです。

;; Emacs has its own path variable
(getenv "PATH")
 (setenv "PATH"
(concat
 "/usr/local/texlive/2011/bin/x86_64-linux" ":"
(getenv "PATH")))
于 2012-06-12T22:43:52.527 に答える
3

xsessionの開始時に.bashrcが読み取られない場合があります。追加してみてください

export SETTINGS=/home/user/settings.xml

.xsessionrcまたは(gnomeを使用し.gnomercている場合)。これらのファイルは、Xセッションの起動時にロードされます。

于 2012-06-13T02:47:13.677 に答える
0

emacs内でRセッションを開始すると、Rセッションにはemacsと同じ環境変数が含まれます。したがって、最初に、その環境にSETTINGS変数が含まれるような方法でemacsを開始することを確認する必要があります。そうすれば、emacs内で開始するRセッションには、その環境にもSETTINGSが含まれます。これをどの程度正確に達成するかは、システムによって異なります。

于 2012-06-12T23:58:38.493 に答える
0

あなたが置くことができます

SETTINGS <- "/home/user/settings.xml"

.Rprofile回避策として。

于 2012-06-13T03:05:04.737 に答える