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