2011-12-22 2 views
31

내 이맥스를 찾을 수없는 라텍스/pdflatex/...의 위치는/usr/texbinPATH 설정하고 간부 경로하지만 이맥스 실행

(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) 

가 포함되어 있습니다. /opt/local/bin /은 gs를 찾을 수있는 곳입니다. 내가 미리보기 -에 - 포인트, 분명히 라텍스와 GS 모두를 필요로 실행할 때

그리고 아직, 그 라텍스 대한 모든 권리,하지만 GS를 볼 수 있습니다 의미

Preview-DviPS finished at Thu Dec 22 11:25:46 
DviPS sentinel: Searching for program: No such file or directory, gs 

를 얻을.

exec-path 설정이 필요한지, PATH로 충분할지 모르지만 디버깅 측정 값으로 설정했습니다.

디렉토리가 PATH와 exec-path에 있어도 emacs가 gs를 찾을 수없는 이유는 무엇입니까?

답변

56

, 그래서 그들은 서로 다른 참조 :

+0

필자는 OSX를 실제로 사용하고 있으며 쉘에서 PATH 및 exec-path를로드하는 것이 매우 유용 할 것입니다. 그러나'string-rtrim'은 찾을 수 없습니다 (emacs 22와 23은 찾을 수 없습니다). 그것은 당신 자신의 기능입니까? – Calaf

+0

아, 그래, 내 자신의 기능입니다 : 나는 이것을 해결하기 위해 답을 편집 할 것입니다. – sanityinc

+0

인사말 .. 기회가 있으면 답변을 업데이트하십시오. 이맥스/맥 사용자라면 매우 편리 할 것입니다. 귀하가 확인한 바와 같이, 질문은 Mac 사용자들에게 가장 관련이 있습니다. 따라서 충분한 점수를 얻으려면 queston을 apple.stackexchange.com으로 마이그레이션하십시오. – Calaf

-3

경로 문자열 끝에 : 경로 구분 기호가 누락 된 것 같습니다. 당신이 당신의 이맥스 내부 $PATH을 설정하는 경우 당신은 당신의 쉘을 통해 시작되지 않은 OS X의 GUI를 응용 프로그램에있을 수 있습니다,

(setq exec-path (append exec-path '("/usr/texbin" "/opt/local/bin"))) 
+0

IOW, 사용과 고정 ".는/usr/texbin :/옵션/지방/빈 :"(주''끝). – Drew

+0

종료 경로 구분 기호를 추가하고 (그리고 이맥스를 다시 시작한 후에) 나는 여전히 같은 오류가 발생합니다. – Calaf

+0

아니요! 정확히 이것을하지 마십시오. 이것은 셸 PATH가 단순한 목록 인 exec-path 변수를위한 것이 아닙니다. – Thomas

8

이와 함께 두 번째 줄을 교체하십시오 환경 변수.

(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)))) 

그리고 단순히 전화 : 여기

내가 터미널 불 ( 을하지만 아래 "업데이트"참조) 만약 내가 볼 같은 하나의 내가 이맥스 내부의 $PATH을 보장하기 위해 사용하는 트릭을가요 set-exec-path-from-shell-PATH 함수, 아마도 Emacs init 파일에서. 나는 그 코드 on github, BTW를 유지한다.

업데이트 :이 코드는 개선되어 exec-path-from-shell이라는 elisp 라이브러리로 게시되었습니다. 설치 가능한 패키지는 Marmalade 및 Melpa에서 제공됩니다.

+1

그러면'gs' 문제는 해결되지만 gs가 생성 한 파일의 권한과 관련된 것으로 보이는 또 다른 문제가 있습니다. 그 질문을 별도로 요청하겠습니다. – Calaf

1

비슷한 문제가 발생했지만 올바른 'PATH'와 함께 ':'을 포함하고 있습니다. 내부 이맥스 쉘 프로그램이 누락되어 '프로그램 검색 : 파일이나 디렉토리가 없습니다'라는 메시지가 나타났습니다. 는

(setq shell-file-name "bash").