Eshell - где находится каталог по умолчанию и путь?
Два небольших вопроса относительно конфигурации Eshell. Я посмотрел на параметры настройки и даже исходный код, но безрезультатно. Может, мне стоило взглянуть получше.
Когда я запускаю Emacs и открываю Eshell, каталогом является ~ ~.emacs.d / elpa вместо моего домашнего каталога ~/, что я и ожидал. Я понятия не имею, откуда взялась эта конфигурация, и не нашел способа ее изменить.
Я изменил $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 чрезвычайно полезным.