Какой установочный файл читает eshell (elisp shell) при запуске? Как eshell устанавливает свой путь? - PullRequest
10 голосов
/ 02 сентября 2010

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

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

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

ДОБАВЛЕНО

Как отметил Жером Радикс, ПУТЬ зависит от того, как я запускаю Аквамчи.

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

Ответы [ 3 ]

6 голосов
/ 02 сентября 2010
  • Какой файл установки читает 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.")
  • Как сделать PATH eshell таким же, как PATH переменной среды?

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

4 голосов
/ 06 сентября 2010

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

1 голос
/ 02 сентября 2010

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

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

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

...