Какой установочный файл читает eshell (elisp shell) при запуске? Как eshell устанавливает свой путь?

с emacs / eshell "echo $PATH" показывает разные пути, чем у переменной среды $PATH.

и я также проверил, что эшелл не читает .bashrc or .профиль, и я думаю, что это причина, по которой путь отличается.

  • какой установочный файл читает eshell при запуске?
  • как eshell устанавливает свой путь?
  • как сделать путь eshell таким же, как переменная окружения Путь?

добавил

Как указал Жером Радикс, путь зависит от того, как я начну Aquamcs.

  • когда я нажимаю кнопку, чтобы запустить Aquamacs, он имеет другой путь.
  • когда я запускаю "aquamacs" из командной строки, он имеет тот же путь.

3 ответов


  • какой установочный файл читает eshell при запуске?

при запуске файл установки не выполняется. Для определения начальной истории и последних каталогов читаются следующие файлы:

~/.eshell/history
~/.eshell/lastdir
  • как eshell устанавливает свой путь?

в esh-util.Эль, строка 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 процесса emacs. Я предполагаю, что вы делаете путь echo $на оболочке вне emacs для сравнения. Если путь отличается между emacs и вашей оболочкой вне emacs, это потому, что emacs и ваша оболочка не выполняют одни и те же сценарии запуска.


поскольку вы находитесь на Mac, важно знать, что приложения GUI (такие как Aquamacs, когда они не открыты с терминала) получают свою среду от ~/.MacOSX/environment.plist, Так что вы можете сделать там изменения. См., в частности эта статья Брайана D Foy для способа автоматического создания этого файла.


по определению echo $PATH показывает значение PATH переменные среды. Оболочка работает внутри Emacs наследует PATH переменная среды из запущенного процесса Emacs.

Оболочка работает в eshell не является отдельной программой, такой как bash, она встроена в Emacs. Его настройка осуществляется через Emacs Lisp. В частности, при запуске eshell он запускает функции в eshell-mode-hook и загружает файлы Lisp в eshell-modules-list.

похоже, что вы не устанавливаете PATH в правильном файле конфигурации. Правильным местом будет то, что сделано в начале вашего сеанса. Это зависит от операционной системы; если у вас есть проблемы с этим, спросите о Супер Пользователя, не забудьте сказать, что ваша операционная система, и, если применимо, укажите свою оболочку входа, среду рабочего стола и т. д.