.bash_profile или .bashrc для оболочки в emacs?

11

Я написал псевдоним для огромной команды и сохранил его, .bash_profileи, к моему удивлению, emacs не выбрал псевдоним, в котором я написал .bash_profile. После некоторых поисков в Интернете я создал .bashrcфайл в своем $ HOME с помощью команды alias, и только после этого emacs выбрал псевдоним. Я запутался, потому что терминал.app получает псевдоним, .bash_profileа emacs принимает псевдоним только в .bashrc.

Я работал, M-x shellи я на MacOS. Может кто-нибудь объяснить мне, каковы отношения с emacs и .bashrc& .bash_profile.

Если говорить более конкретно, как я могу заставить Emacs читать мои .bash_profileв дополнение к .bashrc?

Чакраварти Рагхунандан
источник
1
Как вы заставили Emacs подобрать .bashrcпсевдонимы? Я спрашиваю об этом, потому что мой Emacs (и, очевидно, другие) не делает этого по умолчанию.
Arch Stanton
@ArchStanton, см. @Vera Johanna ответ на этот вопрос. Это тот же метод, который я использовал. Хотя сейчас я использую zshвместо Баша :)
Чакраварти Рагхунандан

Ответы:

14

Это правильное поведение. .bash_profileдля так называемых оболочек входа в систему. Например, когда вы входите на свой компьютер в текстовом режиме или в эмуляторе терминала на другом компьютере через sshили telnetили ...

.bashrcпредназначен для не входящих в систему оболочек, например, когда вы уже вошли в систему и запустили новый xterm, или в этом случае в shellрежиме emacs .

Обычно в нем .bash_profileсодержатся команды для чтения .bashrc:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

так что .bashrcчитается при каждом запуске.


Итак, псевдонимы принадлежат .bashrc; также принято создавать отдельное .bash_aliasesи включать его .bashrcчерез ту же конструкцию:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Вера Йоханна
источник
11

В дополнение к пунктам, сделанным @pingi, вы также можете использовать отдельный файл конфигурации, который будет загружен только для оболочки emacs ( M-x shell):

Со страницы руководства (emacs) Интерактивная оболочка :

Emacs отправляет новой оболочке содержимое файла '~ / .emacs_SHELLNAME' в качестве входных данных, если он существует, где SHELLNAME - имя файла, из которого была загружена оболочка. Например, если вы используете bash, файл, отправленный на него, будет ~ / .emacs_bash. Если этот файл не найден, Emacs пытается с помощью ~ ~ .emacs.d / init_SHELLNAME.sh.

Это полезно, если вы хотите использовать другой формат приглашения оболочки в Emacs или определить функции для передачи файлов в emacsclient.

Тайлер
источник