OSX'teki tüm ortam değişkenlerini nasıl başlatabilirim?

OSX'de (terminalden değil) GUI emacs'i başlatırsam, kullanıcı ortam değişkenlerimi bilmez.

kabuktan yürütme yolu paket çoğunlukla bunu çözer , ancak belirli ortam değişkenlerini açıkça başlatırken, all ortam değişkenlerini başlatmanın bir yolunu göremiyorum.

Uygulamalarıma sır vermek için ortam değişkenlerini kullanıyorum, bu yüzden çok fazla veriyorum ve bunları init.el adresimden eklememeyi ve kaldırmamayı tercih ediyorum.

4
Hangi kabuğu kullanıyorsunuz? Çoğu kabuğun set değişkenlerini listeleme komutu vardır, örn. bash içinde set
katma yazar user1126070, kaynak
zsh 'de set , herhangi bir argüman olmadan, sadece değişkenlerin bir listesini üretir
katma yazar user1126070, kaynak
@AndrewSwann zsh kullanıyorum.
katma yazar elliot627, kaynak

2 cevap

İşte ben ne ile gelebilirim:

(defun source-file-and-get-envs (filename)
  (let* ((cmd (concat ". " filename "; env"))
         (env-str (shell-command-to-string cmd))
         (env-lines (split-string env-str "\n"))
         (envs (mapcar (lambda (s) (replace-regexp-in-string "=.*$" "" s)) env-lines)))
    (delete "" envs)))

(exec-path-from-shell-copy-envs (source-file-and-get-envs "~/.profile")))

Verilen dosyayı kaynaklandırır, sonra sadece env ortam değişken isimlerini alır.

1
katma

Tüm ortam değişkenlerini başlatmanın bir yolunu göremiyorum.

(let ((bim (shell-command-to-string ". ~/.bashrc; echo -n $BIM")))
  (setenv "BIM" bim))

Böyle bir şey hile yapmalı. Büyük olasılıkla bir döngü eklemek isteyeceksiniz.

0
katma
env komutu, tüm ortam değişkenlerini ve değerlerini listeler.
katma yazar Michael Pryor, kaynak
Bu hala istediğim tüm ortam değişkenlerini listelemem gerekiyor gibi görünüyor. Yaklaşık 50 özel değişkene sahibim ve her birini belirtmek zorunda kalmadan tümünü kullanmak istiyorum.
katma yazar elliot627, kaynak