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


11

Я написав псевдонім для величезної команди і зберігав її в .bash_profileі, на моє здивування, emacs не взяв псевдонім, про який я писав .bash_profile. Після деяких пошуків в Інтернеті я створив .bashrcфайл у своєму $ HOME за допомогою команди alias і лише після цього emacs взяв псевдонім. Я розгублений, оскільки terminal.app приймає псевдоніми, .bash_profileале emacs приймає псевдонім лише в .bashrc.

Я бігав M-x shellі я на macOS. Хтось може мені пояснити, які стосунки з emacs та .bashrc& .bash_profile.

Більше того, як я можу змусити Emacs читати свої .bash_profileдодатково .bashrc?


1
Як ви змусили Emacs забрати .bashrcпсевдоніми? Я запитую це, оскільки мій Emacs (і, мабуть, інші) не робить цього за замовчуванням.
Арка Стентона

@ArchStanton див. Відповідь на це питання @Vera Johanna. Це той самий метод, який я використовував. Хоча зараз я використовую zshзамість bash :)
Chakravarthy Raghunandan

Відповіді:


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.