Как заставить оболочку emacs автоматически выполнять файл инициализации? - PullRequest
13 голосов
/ 06 июня 2009

Мой скрипт инициализации bash (~ / .profile) содержит важные инициализации, но всякий раз, когда я использую команду shell или команду компиляции в emacs, этот файл инициализации не читается, и без этих инициализаций мои команды bash в emacs не будут работать :( Как заставить emacs выполнить мой файл инициализации для оболочки, которую он использует для команды оболочки?

Пояснение: я не говорю о оболочке M-x, которая прекрасно читает мой файл инициализации, когда я вставил ссылку .profile в .emacs_bash.

Ответы [ 3 ]

22 голосов
/ 06 июня 2009

Переместите ваши процедуры инициализации в ваш ~/.bashrc файл

Затем добавьте строку

source ~/.bashrc

в ваш файл ~/.bash_profile. См. справочную страницу bash для подробного объяснения того, какие файлы запуска загружаются когда. Ключ - это разница между интерактивной и неинтерактивной оболочкой, а также разница между login и non-login shell.

Как правило, .bash_profile запускается при входе в систему с использованием оболочки, тогда как .bashrc запускается при запуске новой оболочки (Приложение OS X Terminal является исключением из этого правила, поскольку оно запускает .bash_profile для каждого новый терминал, экземпляр). Для получения дополнительной информации в форме статьи, смотрите здесь.

5 голосов
/ 13 ноября 2013

Я использую Mac, команда-оболочка не выполнила ни .bashrc, ни .bash_profile, я нашел решение для поиска проблемы с PATH.

поместите это в свой .emacs: (setenv "PATH" (исходная команда-оболочка "source ~ / .bashrc; echo -n $ PATH"))

подробнее, см .: Как заставить emacs запускать мой ~ / .bash_profile

2 голосов
/ 09 июня 2009

копание в источнике elisp; похоже, что shell-команда в emacs просто выполняет bash -c "command" в моем случае. Решение состоит в том, чтобы запустить emacs (emacs &) в оболочке, где мой .profile уже запущен (вместо запуска emacs из меню GUI моего менеджера окон).

...