Emacs и/etc/profile на OS X

Когда я выполняю оболочку (M-x shell) в Emacs.app не читает порожденная оболочка (или более конкретно, source), /etc/profile во время инициализации (у меня есть много настроек оболочки, расположенных там).

У меня есть набор переменной пути в ~/.MacOSX/environment.plist, как необходимо, чтобы заставить Emacs.app читать $PATH, таким образом, я сделал одну из необходимой адаптации для размещения Emacs к OS X. Это, кажется, не имеет никакого отношения к переменной ПУТИ, а скорее имеет отношение к инициализации самой оболочки.

1
задан 17.11.2017, 07:14

1 ответ

Хорошо, вот то, что я сделал для решения проблемы. Это базируется ответ на этот вопрос от StackOverflow, который я нашел после спутывания моих критериев поиска немного на Google. Я добавил следующую строку к .bashrc:

source /etc/profile

Все работает, как это должно теперь.

Править: Почему проблема происходит

Я нашел, почему необходимо явно вынудить оболочку Bash считать/etc/profile, а не иметь его чтение на вызове. Вот соответствующий раздел из руководства Bash (man bash):

Когда интерактивная оболочка, которая не является оболочкой входа в систему, запускается, удар читает и выполняет команды от ˜/.bashrc, если это file существует. Это может быть запрещено при помощи −−norc опции. −−rcfile file опция вынудит удар считать и выполнить команды от file вместо ˜/.bashrc.

Можно вывести из способа, которым это записано (и что он говорит о том, как вызвать оболочки входа в систему перед этим), это shell.el не вызывает оболочку входа в систему. Я искал доказательство этого в shell.el и это, кажется, верно, Bash вызывается с (интерактивным) флагом-i, но не - флаг входа в систему. Оболочки невхода в систему действительно читают .bashrc, таким образом, это - то, почему можно работать вокруг проблемы путем помещения source /etc/profile в .bashrc.

3
ответ дан 12.12.2019, 10:51

Теги

Похожие вопросы