W moim .bashrc, mam linię:Jak uzyskać dostęp do zmiennej środowiskowej bash z poziomu R w emacs-ESS
export SETTINGS=/home/user/settings.xml
Gdybym załadować R w bash, można uzyskać dostęp do tej zmiennej za pomocą funkcji Sys.getenv
:
Sys.getenv("SETTINGS")
"/home/user/settings.xml"
Gdybym otworzyć R w Emacs (MX R), ustawień jest pusty:
Sys.getenv("SETTINGS")
""
Co próbowałem:
dodanie następujących do .emacs na podstawie 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))
otwarcia wybić otwór emacsie pomocą
M-x term
echo $SETTINGS # works R Sys.getenv("SETTINGS") #works
Jeśli otworzyć emacsowi z terminala ustawienia zmienna jest dostępna zgodnie z oczekiwaniami. Otwieranie emacs z menu Aplikacje (z komendą
/usr/bin/emacs23 %F
lubemacs
) nie działa.porównywaniu wyników z
session("env")
podczas ładowania R w bash vs emacs, ale nic nie stoi na inny niż (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
mogę albo
- dostęp do ustawień z poziomu R w emacs-ess
- eksportuj ustawienia, gdzie mogę uzyskać do niego dostęp?
Jak zaczynasz Emacs? Jeśli uruchomisz powłokę bash (z ustawieniami SETTINGS w środowisku) i uruchomisz Emacs z tego miejsca, powinno działać. Jak się wydaje, proces macierzysty nie ma tej zmiennej środowiskowej (zaczynając od powłoki Gnome lub podobnej?). –
@MatthewLundberg Zaktualizowałem swoją odpowiedź (patrz punkt # 3). Otwarcie z terminalu działa. Otwieranie wywołań '/ usr/bin/emacs23% F' z menu Aplikacje, Gnome-do lub skrótu klawiaturowego nie działa. – Abe