2012-06-12 17 views
6

, ben çizgi var :benim .bashrc olarak

Ben Emacs (Mx R) 'de R açarsanız
Sys.getenv("SETTINGS") 
"/home/user/settings.xml" 

, AYARLAR boş:

Sys.getenv("SETTINGS") 
"" 

denedim ne:

  1. I terminalden emacs açın, AYARLARI M-x term

    echo $SETTINGS   # works 
    R 
    Sys.getenv("SETTINGS") #works 
    
  2. kullanılarak emacs'taki How do I make Emacs recognize bash environment variables for compilation?

    ;; get environment vars from .bashrc 
    (let ((path (shell-command-to-string ". ~/.bashrc; echo -n $SETTINGS"))) 
        (setenv "SETTINGS" path)) 
    
  3. açılması deneme göre, .emacs aşağıdaki ekleme değişken beklendiği gibi kullanılabilir. Uygulamalar menüsünden (/usr/bin/emacs23 %F veya emacs komutuyla) emacs açılmıyor.

  4. emacs'dan vs bash R yüklerken session("env") çıkışı karşılaştırılması, ama hiçbir dışında öne çıkmaktadır (deneme = <, 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 
    

I Can ya

  1. emacs-ess içindeki R içindeki AYARLAR'a erişme
  2. AYARLAR erişebildiğim bir yere SETTINGS verir?
+0

Emacs'i nasıl başlatıyorsunuz? Bir bash kabuğunu (ortamdaki SETTINGS ile) başlatırsanız ve oradan Emacs'i başlatırsanız, çalışmalıdır. Görüldüğü gibi, ana işlemin bu ortam değişkenine sahip olmadığı görülmektedir (Gnome kabuğundan veya benzeriden başlayarak). –

+0

@MatthewLundberg Cevabımı güncelledim (bkz. Nokta # 3). Terminal işlerinden açılış. Uygulamalar menüsünden '/ usr/bin/emacs23% F' ile yapılan çağrılar, Gnome-do veya klavye kısayolu yok. – Abe

cevap

3

R ve kendinden tanımlanmış ortam değişkenlerini bilmiyorum, ancak PATH değişkenini emacs cinsinden bashrc ile aynı değere ayarlıyorum. Kodumu probleminize göre değiştirdim, bir şans verdim ve çalışıp çalışmadığını bana bildirin. (PATH için)

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

Orjinal kodunuz: Size emacs'dan içindeki bir R oturumu başlatmak, sonra R oturum emacs'dan aynı ortam değişkenleri olacak

;; Emacs has its own path variable 
(getenv "PATH") 
(setenv "PATH" 
(concat 
"/usr/local/texlive/2011/bin/x86_64-linux" ":" 
(getenv "PATH"))) 
0

. Bu nedenle, öncelikle, ortamın SETTINGS değişkeninizi içerecek şekilde emacs başlattığınızdan emin olmalısınız. Böylece, emacs içinde başladığınız R oturumunuz, ortamlarında da AYARLAR'a sahip olacaktır. Bunu tam olarak nasıl başarmanız sisteminize bağlıdır. Xsession başlatıldığında, .bashrc okunamayabilir (

+0

Benim sistemlerim Ubuntu ve RedHat; başka tavsiyen var mı? Emacs içindeki ortamı nasıl görebilirim? emacs içinde 'M-x terimi 'kullanarak bir bash terminali açarsam, değişkenler bulunur. – Abe

3

. (Gnome kullanıyorsanız) .xsessionrc veya .gnomerc yılında

export SETTINGS=/home/user/settings.xml 

eklemeyi deneyin. Bu dosya X oturumunda başlangıçta yüklenir.

+0

'~/.profile' ve'/etc/profile' da çalışır. – Abe

+0

Muhtemelen xsesssionrc'den daha iyidirler çünkü ssh tarafından girişte okunuyorlar. –

0

Bir iş çevresinde olarak .Rprofile yılında

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

koyabilirsiniz.

+0

"R --vanilla" modundaki değişkene erişmek istediğim dışında uygun bir çözüm olurdu. – Abe

İlgili konular