2011-12-22 5 views
31

私の.emacsを見つけることができませんラテックス/にpdflatex/..配置されている場所は/ usr/texbinPATHおよび設定するには、EXECパスが、Emacsは、実行可能

(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

挨拶..チャンスがあれば、あなたの答えを更新してください。 emacs/Macユーザーにとっては非常に便利です。あなたが確認したように、質問はMacの方々にとって本当に重要です。十分なポイントがあれば、questonをapple.stackexchange.comに移行してください。 – Calaf

-3

パス文字列の末尾にパス区切り文字:がありません。あなたはEmacsの内部で$PATHを設定している場合は、よくあなたのシェル経由で開始されていないOS XのGUIアプリケーションであるかもしれない、

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

IOW、使用して固定 ":は/ usr/texbin場合:/ opt/local/binに:"( '注意:'終わり)。 – Drew

+0

終端パス区切り文字を追加して(そしてemacsを再起動した後も)、私は同じエラーを受けます。 – Calaf

+0

いいえ!まったくこれをしないでください。これは、シェルPATHのためのものであり、単にリストであるexec-path変数のものではありません。 – Thomas

8

これで第二ラインを交換してみてください環境変数。ここで

は、私はEmacsの内部$PATHは私がターミナルまで火(をしかし下の「更新」を参照)場合、私が見るものと同じであることを確認するために使用するトリックです:

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

その後、単純に呼び出しますおそらくあなたのEmacsのinitファイルから得たものです。私はそのコードon github、BTWを維持します。

更新:このコードは、exec-path-from-shellと呼ばれるelispライブラリとして改良され、公開されました。インストール可能なパッケージはMarmaladeとMelpaで入手できます。

+1

これは 'gs'問題を解決しますが、gsによって生成されたファイルのパーミッションに関連するように思われるもう一つの問題があります。私は別にその質問をしましょう。 – Calaf

1

同様の問題が発生しましたが、末尾に ':'を含む正しいPATHがあります。内部のemacsシェルプログラムが見つからなかったため、「プログラムの検索:そのようなファイルまたはディレクトリはありません」というメッセージが表示されました。 は

(setq shell-file-name "bash"). 
関連する問題