2011-12-22 14 views
31

मेरे .emacs नहीं मिल रहा हैपथ और कार्यकारी-पथ सेट, लेकिन 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) 

/usr/texbin वह जगह है जहाँ लेटेक्स/pdflatex/.. स्थित हैं। /ऑप्ट/स्थानीय/बिन/जहां जीएस पाया जा सकता है।

और फिर भी जब मैं पूर्वावलोकन-एट-बिंदु, जो जाहिरा तौर पर दोनों लेटेक्स और जी एस की जरूरत है चलाने के लिए, मैं

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

जिसका अर्थ है कि लेटेक्स सब ठीक है, लेकिन नहीं gs पाया जा सकता है मिलता है।

मुझे यकीन नहीं है कि सेटिंग-पथ आवश्यक है या नहीं, शायद पैथ पर्याप्त है, लेकिन मैंने इसे डिबगिंग उपाय के रूप में सेट किया है।

क्यों emacs जीएस नहीं ढूंढ सकता है भले ही निर्देशिका में यह पाथ और निष्पादन पथ दोनों में है?

उत्तर

56

, आप अच्छी तरह से ओएस एक्स जीयूआई अनुप्रयोगों पर हो सकता है अपने खोल के माध्यम से शुरू नहीं किया है, इसलिए वे अलग अलग देखें:

+0

मैं वास्तव में ओएसएक्स पर हूं, और खोल से पैथ लोड करना और खोल-पथ बहुत अच्छा होगा। फिर भी 'स्ट्रिंग-आरआरटीआईएम' नहीं मिला है (न तो emacs 22 और न ही 23)। क्या यह आपका अपना काम है? – Calaf

+0

आह, हाँ, यह मेरा स्वयं का कार्य है: मैं इसे ठीक करने के लिए उत्तर संपादित करूंगा। – sanityinc

+0

नमस्कार .. यदि आपके पास कोई मौका है, तो कृपया अपना उत्तर अपडेट करें। यह हमारे लिए emacs/मैक उपयोगकर्ताओं के लिए बहुत आसान होगा। जैसा कि आपने पहचाना है, सवाल वास्तव में मैक लोगों के लिए प्रासंगिक है, इसलिए यदि आपके पास पर्याप्त अंक हैं, तो कृपया questonstackchange.com पर queston माइग्रेट करें। – Calaf

-3

ऐसा प्रतीत होता है कि आप अपने पथ स्ट्रिंग के अंत में पथ विभाजक : खो रहे हैं। आप अपने Emacs अंदर $PATH कर रहे हैं तो

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

IOW, उपयोग फिक्स्ड ":।/Usr/texbin:/opt/स्थानीय/बिन:" (नोट ':' अंत में)। – Drew

+0

एक टर्मिनिंग पथ विभाजक जोड़ने और emacs को पुनरारंभ करने के बाद भी मुझे एक ही त्रुटि मिलती है। – Calaf

+0

नहीं! बिल्कुल ऐसा मत करो। यह खोल पथ के लिए है जो निष्पादन पथ चर के लिए नहीं है जो सिर्फ एक सूची है। – 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 Emacs अंदर सुनिश्चित करने के लिए का उपयोग कर रहा है वही मैं देख रहा हूँ कि अगर मैं एक टर्मिनल तक आग (लेकिन नीचे "अद्यतन" देखें) है set-exec-path-from-shell-PATH फ़ंक्शन, शायद आपके Emacs init फ़ाइल से। मैं उस कोड को on github, बीटीडब्ल्यू रखता हूं।

अपडेट: यह कोड अब exec-path-from-shell नामक एक एलिस्क्रिप्ट लाइब्रेरी के रूप में सुधार और प्रकाशित किया गया है; इंस्टॉल करने योग्य पैकेज Marmalade और Melpa में उपलब्ध हैं।

+1

जो 'जीएस' समस्या हल करता है, लेकिन अब एक और समस्या है, जो जीएस द्वारा उत्पन्न फाइल की अनुमति से संबंधित प्रतीत होता है। मुझे उस प्रश्न को अलग से पूछने दो। – Calaf

1

मैंने एक समान समस्या को मारा, लेकिन एक सही पाथ के साथ, पीछे की ओर ':' सहित। यह पता चला कि आंतरिक emacs खोल कार्यक्रम गायब था, जिसके परिणामस्वरूप 'कार्यक्रम के लिए खोज: ऐसी कोई फ़ाइल या निर्देशिका' संदेश नहीं था। साथ

(setq shell-file-name "bash"). 
संबंधित मुद्दे