Hoe kan ik alle omgevingsvariabelen initialiseren in OSX?

Als ik GUI-emacs start in OSX (niet vanaf de terminal), weet het niet wat mijn gebruikersomgevingsvariabelen zijn.

Het exec-path-from-shell pakket lost dit meestal op , maar hoewel u specifieke omgevingsvariabelen expliciet kunt initialiseren, zie ik geen manier om alle omgevingsvariabelen te initialiseren.

Ik gebruik omgevingsvariabelen om geheimen te bieden voor mijn toepassingen, dus ik heb er meestal veel van en zou deze liever niet toevoegen aan en verwijderen van mijn init.el .

4
Welke schaal gebruik je? De meeste shells hebben een opdracht om de ingestelde variabelen te vermelden, bijvoorbeeld in bash is dit set
toegevoegd de auteur user1126070, de bron
set in zsh , zonder enig argument, produceert ook gewoon een lijst met variabelen
toegevoegd de auteur user1126070, de bron
@AndrewSwann Ik gebruik zsh.
toegevoegd de auteur elliot627, de bron

2 antwoord

Hier is wat ik kon bedenken:

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

Het zoekt naar het gegeven bestand en krijgt dan alleen de omgevingsvariabele-namen uit env .

1
toegevoegd

Ik zie geen manier om alle omgevingsvariabelen te initialiseren.

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

Zoiets zou de slag moeten slaan. U wilt waarschijnlijk een lus toevoegen.

0
toegevoegd
De opdracht env geeft een overzicht van alle omgevingsvariabelen en hun waarden.
toegevoegd de auteur Michael Pryor, de bron
Dit lijkt erop dat ik nog steeds alle omgevingsvariabelen moet weergeven die ik wil. Ik heb ongeveer 50 aangepaste variabelen ingesteld en wil allemaal gebruiken zonder elke naam te hoeven benoemen.
toegevoegd de auteur elliot627, de bron