.bash_profile atau .bashrc untuk shell di emacs?

11

Saya menulis alias untuk sebuah perintah besar dan menyimpannya di dalam .bash_profiledan mengejutkan saya, emacs tidak mengambil alias yang saya tulis .bash_profile. Setelah beberapa pencarian di internet, saya membuat .bashrcfile dalam $ HOME saya dengan perintah alias dan hanya setelah itu emacs mengambil alias. Saya bingung karena terminal.app mengambil alias dari .bash_profiletetapi emacs hanya mengambil alias di .bashrc.

Saya sedang berlari M-x shelldan saya menggunakan MacOS. Dapatkah seseorang menjelaskan saya apa hubungan dengan emacs dan .bashrc& .bash_profile.

Lebih penting lagi, bagaimana saya bisa membuat Emacs membaca .bash_profiletambahan saya .bashrc?

Chakravarthy Raghunandan
sumber
1
Bagaimana Anda membuat Emacs untuk mengambil .bashrcalias Anda ? Saya menanyakan ini karena Emacs saya (dan ternyata yang lain) tidak melakukannya secara default.
Arch Stanton
@ArchStanton lihat @Vera Johanna menjawab pertanyaan ini. Itu adalah metode yang sama yang saya gunakan. Meskipun sekarang saya menggunakan zshbukan bash :)
Chakravarthy Raghunandan

Jawaban:

14

Ini adalah perilaku yang benar. .bash_profileuntuk apa yang disebut shell login. Seperti ketika Anda login ke komputer Anda dalam mode teks, atau di emulator terminal ke komputer yang berbeda melalui sshatau telnetatau ...

.bashrcdimaksudkan untuk shell non-login, seperti ketika Anda sudah login dan memulai xterm baru, atau dalam hal ini shellmode emacs .

Biasanya .bash_profileberisi perintah untuk membaca .bashrc, juga:

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

jadi .bashrcdibaca di setiap startup.


Jadi, alias milik .bashrc; juga merupakan kebiasaan untuk membuat yang terpisah .bash_aliasesdan memasukkannya .bashrcmelalui konstruk yang sama:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Vera Johanna
sumber
11

Selain poin yang dibuat oleh @pingi, Anda juga dapat menggunakan file konfigurasi terpisah yang hanya akan dimuat untuk shell emacs ( M-x shell):

Dari halaman manual (emacs) Shell Interaktif :

Emacs mengirimkan shell baru isi file '~ / .emacs_SHELLNAME' sebagai input, jika ada, di mana SHELLNAME adalah nama file dari mana shell diisikan. Misalnya, jika Anda menggunakan bash, file yang dikirim ke file tersebut adalah '~ / .emacs_bash'. Jika file ini tidak ditemukan, Emacs mencoba dengan '~ / .emacs.d / init_SHELLNAME.sh'.

Ini berguna jika Anda ingin menggunakan format prompt shell yang berbeda dalam Emacs, atau untuk mendefinisikan fungsi untuk meneruskan file ke emacsclient.

Tyler
sumber