.bash_profile czy .bashrc dla powłoki w emacsie?

11

Napisałem alias dla ogromnej komendy i zapisałem go .bash_profilei ku mojemu zaskoczeniu emacs nie wybrał aliasu, w którym napisałem .bash_profile. Po kilku poszukiwaniach w Internecie utworzyłem .bashrcplik w moim $ HOME za pomocą polecenia alias i dopiero potem emacs podniósł alias. Jestem zdezorientowany, ponieważ terminal.app pobiera alias, .bash_profileale emacs przyjmuje tylko alias .bashrc.

Pracowałem M-x shelli korzystam z systemu macOS. Czy ktoś może mi wyjaśnić, jaki jest związek z emacsem i .bashrc& .bash_profile.

Co więcej, w jaki sposób mogę zmusić Emacsa do przeczytania mojego .bash_profileoprócz .bashrc?

Chakravarthy Raghunandan
źródło
1
Jak skłoniłeś Emacsa do wybrania twoich .bashrcpseudonimów? Pytam o to, ponieważ moje Emacsy (i najwyraźniej inni) nie robią tego domyślnie.
Arch Stanton
@ArchStanton patrz odpowiedź @Vera Johanna na to pytanie. To ta sama metoda, której użyłem. Chociaż teraz używam zshzamiast bash :)
Chakravarthy Raghunandan

Odpowiedzi:

14

To jest właściwe zachowanie. .bash_profiledotyczy tak zwanych powłok logowania. Podobnie jak w przypadku logowania się do komputera w trybie tekstowym lub w emulatorze terminala do innego komputera poprzez sshalbo telnetalbo ...

.bashrcjest przeznaczony dla powłok niezalogowanych, na przykład gdy jesteś już zalogowany i zaczynasz nową xterm, lub w tym przypadku shelltryb emacsa .

Zwykle .bash_profilezawiera także polecenia do odczytu .bashrc:

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

więc .bashrcjest czytany przy każdym uruchomieniu.


Tak więc aliasy należą do .bashrc; powszechne jest również tworzenie osobnego .bash_aliasesi dołączanie go .bashrcza pomocą tej samej konstrukcji:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Vera Johanna
źródło
11

Oprócz punktów wskazanych przez @pingi, możesz także użyć osobnego pliku konfiguracyjnego, który zostanie załadowany tylko dla powłoki emacs ( M-x shell):

Ze strony podręcznika (emacs) Interactive Shell :

Emacs wysyła nową powłokę jako zawartość pliku „~ / .emacs_SHELLNAME” jako dane wejściowe, jeśli istnieje, gdzie SHELLNAME to nazwa pliku, z którego została załadowana powłoka. Na przykład, jeśli używasz bash, plik do niego przesłany to „~ / .emacs_bash”. Jeśli ten plik nie zostanie znaleziony, Emacs spróbuje z „~ / .emacs.d / init_SHELLNAME.sh”.

Jest to przydatne, jeśli chcesz użyć innego formatu zachęty powłoki w Emacsie lub zdefiniować funkcje przekazywania plików do emacsclient.

Tyler
źródło