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

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

И я также проверил, что eshell не читает.bashrc или.profile, и я думаю, что это причина, почему путь отличается.

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

ADDED

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

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

3 ответа

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

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

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

В 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.")
  • Как сделать PATH eshell таким же, как PATH переменной среды?

Это то же самое, что переменная PATH процесса emacs. Я представляю, что вы делаете echo $PATH для оболочки вне emacs для сравнения. Если PATH различаются между emacs и вашей оболочкой вне emacs, то это потому, что emacs и ваша оболочка не выполняют одинаковые сценарии запуска.

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

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

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

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

Другие вопросы по тегам