Emacs и / etc / profile в OS X

1652
Pinochle

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

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

1

1 ответ на вопрос

3
Pinochle

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

source /etc/profile 

Теперь все работает как надо.

РЕДАКТИРОВАТЬ: Почему проблема возникает

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

Когда запускается интерактивная оболочка, которая не является оболочкой входа, bash читает и выполняет команды из ˜ / .bashrc, если такой файл существует. Это может быть запрещено с помощью опции -−norc . --Rc фи ле фи ль опция заставит Баш читать и выполнять команды из фи ля вместо ~ / .bashrc .

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

отличный материал, он снова заработал мой .bashrc. Dan Rosenstark 14 лет назад 0