Как заставить оболочку emacs автоматически запускать файл инициализации?

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

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


person polyglot    schedule 05.06.2009    source источник


Ответы (3)


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

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

source ~/.bashrc

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

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

person Adam Rosenfield    schedule 05.06.2009
comment
Я связал свой .profile с .bashrc и .bash_profile. Кажется, не работает до сих пор. Emacs запускает интерактивную или неинтерактивную оболочку? Я также попытался добавить --login в явные аргументы bash, и все равно не повезло. - person polyglot; 06.06.2009
comment
Ааа, теперь я снова могу любить свою оболочку Emacs! Благодарю вас! :D - person Dan Filimon; 19.02.2012
comment
@DanFilimon это было полное решение и моей проблемы! :) Оболочка Emacs теперь работает с nvm! - person geoyws; 22.12.2016

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

поместите это в свой .emacs: (setenv "PATH" (shell-command-to-string "source ~/.bashrc; echo -n $PATH"))

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

person Imskull    schedule 13.11.2013

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

person polyglot    schedule 09.06.2009
comment
Спасибо, полиглот, у меня тоже сработал запуск emacs с терминала. - person Upgradingdave; 18.12.2009