Eshell - где находится каталог по умолчанию и путь?

Два небольших вопроса относительно конфигурации Eshell. Я посмотрел на параметры настройки и даже исходный код, но безрезультатно. Может, мне стоило взглянуть получше.

  1. Когда я запускаю Emacs и открываю Eshell, каталогом является ~ ~.emacs.d / elpa вместо моего домашнего каталога ~/, что я и ожидал. Я понятия не имею, откуда взялась эта конфигурация, и не нашел способа ее изменить.

  2. Я изменил $PATH в моем.bashrc и настроил переменную Emacs 'exec-path' для своих нужд. Тем не менее, первое изменение не отражено в Eshell, он не знает об этом, в то время как bash знает. Как Eshell получает эту информацию и чем она отличается от bash в своих знаниях об изменениях в этой переменной?

Спасибо за любые подсказки

Торстен

PS

Я нашел похожий вопрос [здесь] (http://stackru.com/questions/3621755/what-setup-file-does-eshell-elisp-shell-read-when-it-starts-how-eshell-sets-i). Ответ на пункт 2. заключается в том, что eshell не читает.bashrc, поэтому $PATH должен быть установлен в файле, который читается ранее в процессе запуска. В моей системе Ubuntu

/etc/environment

похоже, это файл, который Emacs читает при запуске, чтобы установить $PATH.

2 ответа

Решение

Кажется, что eshell запускается в текущем рабочем каталоге, который для вас (сразу после запуска Emacs) - "~/.emacs.d/elpa". Вы можете изменить его вручную с помощью "Mx cd", но в этом нет необходимости. Если вы отредактируете какой-либо файл и запустите eshell из его буфера, eshell запустится в том же каталоге, что и файл.

Но если вы действительно хотите запускать каждый сеанс eshell в своем домашнем каталоге, вы можете сделать ловушку вызовом "cd" перед запуском eshell.

Как уже упоминалось для Q1: eshell запускается в каталоге текущего буфера при запуске eshell. Если я правильно помню (что НЕ дано), в macOS в течение короткого периода времени, когда emacs запускался с помощью Finder (т.е. дважды щелкал значок), текущим буфером для был root/. Теперь, когда он запускается искателем, текущий буфер для*scratch*мой домашний каталог.

Для Q2: переменная, которую вы хотите установить,eshell-path-env. Это список путей, разделенных двоеточием.

я уже использую.dir-locals.elдля установки конкретных переменных каталога, поэтому я планирую сделать это таким образом, но я уверен, что есть пусковые крючки, которые вы можете использовать.

Помните, чтоeshellне _ bash,zsh,cshи т. д. Он никогда не будет читать их файлы rc и не читает/etc/environmentи т.д. В отличие отcomint-modeпроизводных, он не является подпроцессом, а полностью содержится внутриemacs.

Я нашел Mastering Eshell чрезвычайно полезным.

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