10

emacs/eshell では、"echo $PATH" は $PATH 環境変数のパスとは異なるパスを示します。

また、eshell が .bashrc や .profile を読み取らないことも確認しましたが、それがパスが異なる理由だと思います。

  • eshell は、起動時にどのセットアップ ファイルを読み取りますか?
  • eshell はどのように PATH を設定しますか?
  • eshell の PATH を環境変数の PATH と同じにする方法は?

追加した

Jérôme Radix が指摘したように、PATH は Aquamcs の起動方法によって異なります。

  • ボタンをクリックして Aquamacs を起動すると、PATH が異なります。
  • コマンドラインから 'aquamacs' を実行すると、同じ PATH を持っています。
4

3 に答える 3

6
  • eshell は、起動時にどのセットアップ ファイルを読み取りますか?

起動時にセットアップファイルは実行されません。次のファイルが読み込まれ、最初の履歴と最後のディレクトリが定義されます。

~/.eshell/history
~/.eshell/lastdir
  • eshell はどのように PATH を設定しますか?

esh-util.el の 240 行目:

(defvar eshell-path-env (getenv "PATH")
  "Content of $PATH.
It might be different from \(getenv \"PATH\"\), when
`default-directory' points to a remote host.")
  • eshell の PATH を環境変数の PATH と同じにする方法は?

emacs プロセスの PATH 変数と同じです。比較するために、emacs 以外のシェルで echo $PATH を実行すると思います。emacs と emacs 外のシェルで PATH が異なる場合は、emacs とシェルが同じ起動スクリプトを実行しないためです。

于 2010-09-02T08:43:50.283 に答える
5

Mac を使用しているため、GUI アプリケーション (ターミナルから開かれていない場合の Aquamacs など) は から環境を取得することを知っておくことが重要~/.MacOSX/environment.plistです。これにより、そこで変更を行うことができます。このファイルを自動的に構築する方法については、Brian D Foy によるこの記事を特に参照してください。

于 2010-09-06T10:25:32.607 に答える
1

定義により、は環境変数echo $PATHの値を示します。PATHEmacs内で実行されているシェルPATHは、実行中のEmacsプロセスから環境変数を継承します。

<編集> で実行されているシェルeshellはbashのような別個のプログラムではなく、Emacsに組み込まれています。そのカスタマイズはEmacsLispを介して行われます。特に、eshellが起動すると、で関数を実行し、でeshell-mode-hookLispファイルをロードしますeshell-modules-list</編集>

PATH正しい構成ファイルで設定していないようです。適切な場所は、セッションの開始時に行われることです。これはオペレーティングシステムに依存します。それで問題が発生した場合は、スーパーユーザーに質問し、オペレーティングシステムが何であるかを確認し、該当する場合はログインシェル、デスクトップ環境などを示してください。

于 2010-09-01T23:31:35.473 に答える