Bazı komutları çalıştırmak için $PATH
Emacs'te kullanmam gerekir. Emacs'i nasıl kullanabilirim? Emacs'i Ubuntu depolarından kurdum.Emacs, .bashrc dosyasını nasıl kullanır?
cevap
İşte benim GUI Emacs hep bir kabuk içine girmek aynı $PATH
görür sağlamak için bir hile I use var: OS X,
(defun set-exec-path-from-shell-PATH()
(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 eshell-path-env path-from-shell) ; for eshell users
(setq exec-path (split-string path-from-shell path-separator))))
(when window-system (set-exec-path-from-shell-PATH))
Özellikle, bir grafik Emacs kullanıcının kabuk tanımını almak olmaz $PATH
, bu yüzden bu hile bana bu platformda yardımcı olur.
Güncelleme: Bu kod artık exec-path-from-shell adında bir elisp kitaplığı olarak yayımlandı ve yüklenebilir paketler MELPA adresinde bulunmaktadır. Ayrıca GUI uygulamalar için bu dosyadaki yolunu ayarlayabilirsiniz böylece
Bu aynı sorunu 13.04 ubuntu'da giderir (paket yöneticisi yüklemesini kullandım) – Anake
Takma adlar kullanmıyor gibi görünüyor. Ancak isimden dolayı bunu beklemezdim. Normal bash takmalarını almak için bir şey var mı? – Zelphir
Emacs, bash takma adlarınızı asla kullanmaz, özür dileriz: bunlar sadece bash oturumlarında kullanılabilir. Bu kod ve exec-path-from-shell paketi, Emacs'in bash oturumlarınızda görünen aynı yürütülebilir dosyaları ve komut dosyalarını güvenilir bir şekilde bulmasına izin verir. – sanityinc
$PATH
terminalinden, emacs'ı başlattığınız terminalde ayarlanmışsa, sistem komutlarını M-! <your command> RET
komutuyla çalıştırabilirsiniz.
Eğer env varsınız alınmazsa, emacs'ın başlatılmasından dolayı olabilir. Menüyü kontrol edin veya neyse ve emacs
'u bash -c emacs
olarak değiştirmeyi deneyin.
Sen Ubuntu gibi
# /etc/profile.d/path.sh
export PATH="$PATH:/usr/local"
/etc/profile.d yolu ayarlarını ekleyebilir, ben tüm oturumlar kaynağını senin ~/.xsessionrc
hatırlıyorum.
Benim .bash_profile kaynak için benzer bir şey ile geldi. Sadece PATH ile ilgileniyorsanız, yukarıdaki diğer cevaplardan biri daha basittir.
source ~/.bash_profile ; echo post-env; env
dosyasını yürüterek, ardından "post-env" önce her şeyi atarak ve ardından "env" komutunun yazdırdığı "anahtar = değer" biçimindeki değerleri ayrıştırarak çalışır.
Muhtemelen her durumu mükemmel bir şekilde ele almıyor, ama benim için yeterince iyi çalışıyor. -
;;-------------------------------------------------------
;; begin sourcing of .bash_profile
;; only do this on Mac OS X
(when (string= system-type "darwin")
;; require common lisp extensions, for search
(require 'cl)
(defun src-shell-unescape (string)
;; replace \n \t \r \b \a \v \\
;; and octal escapes of the form \0nn
(replace-regexp-in-string
"\\\\\\([ntrbav]\\|\\(\\\\\\)\\|\\(0[0-7][0-7]\\)\\)"
(lambda (str)
;; interpret octal expressions
;; of the form "\0nn"
(let ((char1 (aref str 1)))
(cond ((= ?0 (aref str 1))
(byte-to-string
(+ (* (- (aref str 2) ?0) 8)
(- (aref str 3) ?0))))
((eq char1 ?n) "\n")
((eq char1 ?t) "\t")
((eq char1 ?r) "\r")
((eq char1 ?b) "\b")
((eq char1 ?a) "\a")
((eq char1 ?v) "\v")
((eq char1 ?\\) "\\\\")
(t "")))) string))
(defun src-set-environment-from-env-output(env-output)
;; set the environment from shell's "env" output
(let ((lines (split-string env-output "\n" t)))
(dolist (line lines)
(let ((idx-equals (search "=" line)))
(when (and (not (eq idx-equals nil))
(> idx-equals 1))
(let ((key (substring line 0 idx-equals))
(value (substring line (+ idx-equals 1))))
(setenv key (src-shell-unescape value))
;; (message "%s = %s" key value)
))))))
(defun src-source-shell-file (file-name)
;; if your shell is sh rather than bash, the "source " may need
;; to be ". " instead
(let* ((command (concat "source '" file-name "'; echo 'post-env'; env"))
(output (shell-command-to-string command))
(idx-post-env (search "post-env" output)))
(if (eq nil idx-post-env)
(message "Didn't find expected output after sourcing %s. Found: %s" file-name output)
(let ((trimmed-output (substring output idx-post-env)))
;; (message "trimmed-output: %s" trimmed-output)
(src-set-environment-from-env-output trimmed-output)))))
(src-source-shell-file (expand-file-name "~/.bash_profile")))
;; end sourcing of .bash_profile
;;-------------------------------------------------------
Daha genel bir çözüm https://stackoverflow.com/a/12229404/1190077 verilmiştir (sadece PATH
tüm değişkenleri ve diğer adlar ayarlamak için) tuşuna ayarlamaktır: varsayılan "-c"
(yürütmek geçersiz kılar
(setq shell-command-switch "-ic")
aşağıdaki komutu). "-i"
eklenmesi, bas kabuğu, ~/.bashrc
kaynağına götüren etkileşimli moda zorlar.
- 1. .bashrc komutları emacs içinde mevcut değil
- 2. benim .bashrc olarak
- 3. Emacs: psvn.el dosyasını nereye yerleştirelim?
- 4. HttpClient Kerberos'u nasıl kullanır?
- 5. Emacs, R, Sweave: Emacs
- 6. .bashrc in linux konumu
- 7. BASHRC işlevlerinin ayrıştırma işlevleri
- 8. Bir emacs lisp hash dosyasını dosyaya serileştirme
- 9. Docker'da kök için .bashrc nasıl yapılır
- 10. Git'in yüklenip yüklenmediğini nasıl kontrol edelim .bashrc
- 11. Vim: sh komutunu bashrc kaynağımı nasıl alabilirim?
- 12. C++ modunda .h dosyasını açmak için nasıl emacs söylenir?
- 13. NewCachedThreadPool konuları nasıl kullanır?
- 14. mysql öğesini .bashrc PATH'a ekleme
- 15. Django Fikstürleri ManyToManyFields'ı nasıl kullanır?
- 16. Akka mesaj versiyonlarını nasıl kullanır?
- 17. Tüm kullanıcılar FosUserBundle'ı nasıl kullanır?
- 18. Hazırda Bekletme JDBC'yi nasıl kullanır?
- 19. OpenCV - Renk profillerini nasıl kullanır?
- 20. Değiştirilmiş bir python dosyasını emacs python kabuğunda yeniden yükleme
- 21. Emacs
- 22. Veri modunda PDF olarak org dosyasını dışa aktarma Emacs
- 23. Emacs
- 24. Emacs
- 25. Emacs
- 26. Emacs
- 27. emacs,
- 28. Emacs
- 29. Emacs
- 30. Emacs
http://stackoverflow.com/questions/1393400/commands-from-bashrc-not-available-in-emacs –
[Bu yanıt] (https://emacs.stackexchange.com/a/29120/8849) mükemmel bir çözünürlük gibi görünüyor. –