OSXのすべての環境変数を初期化するにはどうすればよいですか?

OSXでGUIのemacsを起動した場合(端末からではなく)、私のユーザ環境変数についてはわかりません。

exec-path-from-shellパッケージは、特定の環境変数を明示的に初期化することはできますが、すべての環境変数を初期化する方法はありません。

私は自分のアプリケーションに秘密を与えるために環境変数を使用しているので、私はそれらの多くを持っている傾向があり、 init.el からそれらを追加したり削除したりしたくないという傾向があります。

4
どちらのシェルを使用していますか?ほとんどのシェルは、set変数をリストするコマンドを持っています。 bashset
追加された 著者 user1126070,
zshset を引数なしで設定すると、
追加された 著者 user1126070,
@ AndrewSwann私はzshを使用しています。
追加された 著者 elliot627,

2 答え

ここに私が思いつくことができるものがあります:

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

与えられたファイルをソースし、 env から環境変数名だけを取得します。

1
追加された

すべての環境変数を初期化する方法がわかりません。

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

このような何かがトリックを行う必要があります。あなたはおそらくループを追加したいでしょう。

0
追加された
コマンド env は、すべての環境変数とその値を一覧表示します。
追加された 著者 Michael Pryor,
これは、私が望むすべての環境変数をリストアップする必要があるように見えます。約50個のカスタム変数が設定されており、それぞれにすべてを使用したいと考えています。
追加された 著者 elliot627,