emacs GUI を起動すると、.zshrc によっては PATH が設定されません。.zshrc を正しく設定するにはどうすればよいですか?
編集: swank-clojure を使用しようとしていますが、 にないため lein を見つけることができませんPATH
。
この回答は、後でこの質問を見つけ、MacでのEmacsのデフォルトの動作が原因でこの問題が発生している人を対象としています。
Macを使用していて、emacsをシェルから開始する方法を知りたい場合は、カスタマイズしたENVをテキストのみではなくグラフィカルモードで取得し、zshから次のように開始します。
/Applications/Emacs.app/Contents/MacOS/Emacs
これにより、emacsはすべてのシェル(zshまたはその他)のカスタマイズを認識します。
FWIW、この問題は Mac OS X に固有のものではありません。GUI のメニューバーから Emacs を起動すると、通常、コマンドから起動されたものと同じ PATH を持たない Emacs になる GNU/Linux システムにも影響するためです。ライン。この問題は、最初の「xdm」Xsession スクリプトにさかのぼります。修正はかなり簡単ですが (基本的には、ユーザーの Xsession を実行する前にシェルが実行されるように、「exec $SHELL -c Xsession」を実行する Xsessionwrapper スクリプトを使用します)。私たちは20年後、同じ古い問題に苦しんでいます。そしてどういうわけか、gdm3がこれを修正するとは思わない;-(
Mac OS X には、特定のユーザーが起動したプロセスの環境変数を設定できる特別な環境ファイルがあります。これにより、GUI アプリの環境変数を設定できます。あなたの場合、これを使用して、ドックまたはファインダーのアイコンをクリックして起動したemacsのPATHを設定できます。
このファイルは次の場所にあります
~/.MacOSX/environment.plist
XCode でファイルを作成できますが、単純な xml であるため、ファイルの内容は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PATH</key>
<string>~/bin:/usr/local/bin:/usr/local/sbin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:</string>
</dict>
</plist>
Emacs がPATH
isの代わりに使用する変数はexec-path
(C-h v exec-path RET
ドキュメントと状態のために) 呼び出されます。またはexec-path
から初期化されます。から Emacs を起動していないように見えるため、Emacs パスがシェル内のものと正確に一致しません。PATH
EMACSPATH
zsh
またはで設定exec-path
してみてください。ただし、両方を維持する必要があります。シェル構成を直接ソースする方法はわかりませんが、パスを正規表現するだけでよいかもしれません。.emacs
init.el
ファイル内で PATH 変数を指定することもできます。これは、.zshenv
サブシェルに環境を割り当てるための推奨規則です。zsh がユーザーのデフォルト シェルとして構成されている限り、emacs が.zshenv
どのように呼び出されても、emacs はあなたをソースします。