Cum pot inițializa toate variabilele de mediu în OSX?

Dacă pornesc emacs GUI în OSX (nu de la terminal) nu știe despre variabilele mele de mediu de utilizator.

Codul exec-path-from-shell pachetul rezolvă mai ales acest , dar în timp ce puteți inițializa explicit variabilele de mediu specifice, nu văd o modalitate de a inițializa variabilele de mediu toate .

Folosesc variabile de mediu pentru a furniza secrete aplicațiilor mele, așa că am tendința de a avea o mulțime de ele și ar prefera să nu trebuiască să le adaug și să le elimină din init.el .

4
Ce coajă folosiți? Cele mai multe shell-uri au o comandă pentru a lista variabilele setate, de ex. în bash este setat
adăugat autor user1126070, sursa
set în zsh , fără nici un argument, produce doar o listă de variabile
adăugat autor user1126070, sursa
@AndrewSwann Folosesc zsh.
adăugat autor elliot627, sursa

2 răspunsuri

Iată ce am putut să văd:

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

Sursă de fișier dat, apoi devine doar nume de variabile de mediu de la env .

1
adăugat

Nu văd o modalitate de inițializare a tuturor variabilelor de mediu.

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

Ceva de genul ăsta ar trebui să facă trucul. Veți dori probabil să adăugați o buclă.

0
adăugat
Comanda env va afișa toate variabilele de mediu și valorile acestora.
adăugat autor Michael Pryor, sursa
Se pare că ar trebui să aflu în continuare toate variabilele de mediu pe care le doresc. Am setat aproximativ 50 de variabile personalizate și doriți să le utilizați toate fără a fi nevoie să le numiți pe fiecare.
adăugat autor elliot627, sursa