PATH i exec-ścieżka ustawiona, ale emacs nie znajduje pliku wykonywalnego
Mój .emacs zawiera
(setenv "PATH" (concat ".:/usr/texbin:/opt/local/bin" (getenv "PATH")))
(setq exec-path (append exec-path '(".:/usr/texbin:/opt/local/bin")))
(add-to-list 'load-path "/usr/local/share/emacs/site-lisp")
(require 'tex-site)
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
/usr / texbin jest gdzie latex / pdflatex/.. znajdują się. /opt / local / bin / jest miejscem, gdzie można znaleźć gs.
A jednak kiedy uruchamiam preview-at-point, który najwyraźniej potrzebuje zarówno lateksu, jak i gs, dostaję
Preview-DviPS finished at Thu Dec 22 11:25:46
DviPS sentinel: Searching for program: No such file or directory, gs
Co oznacza, że Lateks można znaleźć w porządku, ale nie gs.
Nie jestem pewien, czy ustawienie exec-path jest konieczne, być może PATH wystarczy, ale ustawiłem to jako miarę debugowania.
Dlaczego emacs nie może znaleźć gs mimo, że katalog, w którym się znajduje, znajduje się zarówno w ścieżce, jak i w ścieżce exec?
4 answers
Jeśli ustawiasz $PATH
wewnątrz Emacsa, możesz być na OS X. aplikacje GUI nie są uruchamiane przez powłokę, więc widzą różne zmienne środowiskowe.
Oto sztuczka, której używam, aby upewnić się, że $PATH
wewnątrz Emacsa jest ten sam, który widzę, jeśli odpalę terminal ( ale patrz "update" poniżej):
(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match that used by the user's shell.
This is particularly useful under Mac OSX, where GUI apps are not started from a shell."
(interactive)
(let ((path-from-shell (replace-regexp-in-string "[ \t\n]*$" "" (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
Następnie po prostu wywołaj funkcję set-exec-path-from-shell-PATH
, być może z pliku init Emacsa. Trzymam ten kod na GitHubie, BTW.
Update: ten kod ma teraz została ulepszona i opublikowana jako biblioteka elisp o nazwie exec-path-from-shell ; Pakiety instalowalne są dostępne w MELPA.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-24 01:29:55
Spróbuj zastąpić drugi wiersz tym:
(setq exec-path (append exec-path '("/usr/texbin" "/opt/local/bin")))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-22 17:05:55
Napotkałem podobny problem, ale z poprawną ścieżką, w tym trailing :. Okazało się, że brakuje wewnętrznego programu Emacs shell, co skutkowało poszukiwaniem programu: brak takiego pliku lub wiadomości katalogu. Fixed with
(setq shell-file-name "bash").
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-23 17:45:22
Wygląda na to, że brakuje separatora ścieżki :
na końcu łańcucha ścieżki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-22 16:41:10