Хорошо, вот что я сделал, чтобы решить проблему. Он основан на ответе на этот вопрос от 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 .