GNU/Linux >> Belajar Linux >  >> Linux

Bash tidak membaca .bashrc kecuali dimulai secara manual

Di .bash_profile pastikan Anda memiliki yang berikut:

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi

Mengapa sumber itu? Anda tidak menjalankan bash yang sebenarnya :

$ echo $SHELL
/bin/sh

Di sebagian besar sistem modern sh adalah symlink ke shell dasar. Di Debian saya misalnya:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

Dalam kasus Anda, sh adalah tautan ke bash tapi, seperti yang dijelaskan di man bash :

Jika bash dipanggil dengan nama sh, ia mencoba meniru perilaku startup versi historis sh sedekat mungkin, sembari menyesuaikan dengan standar POSIX juga. [...] Ketika dipanggil sebagai shell interaktif dengan nama sh, bash mencari variabel ENV, memperluas nilainya jika didefinisikan, dan menggunakan nilai yang diperluas sebagai nama file untuk membaca dan mengeksekusi. Karena sebuah shell dipanggil sebagai shtidak mencoba untuk membaca dan menjalankan perintah dari file startup lainnya , opsi --rcfile tidak berpengaruh.

dan

--norc
Jangan membaca dan menjalankan file inisialisasi seluruh sistem/etc/bash.bashrc dan file inisialisasi pribadi ~/.bashrcjika shell bersifat interaktif. Opsi ini aktif secara default jika shell dipanggil sebagai sh.

Jadi, karena shell default Anda adalah sh , .bashrc tidak dibaca. Atur saja shell default Anda ke bash menggunakan chsh -s /bin/bash .


Linux
  1. Memulai dengan Zsh

  2. Bagaimana Cara Mengubah Cron Shell (sh ke Bash)?

  3. Fungsi Dalam Variabel Shell?

  1. Menyesuaikan shell Bash

  2. Shell Script, baca di baris yang sama setelah mengulang pesan

  3. Bagaimana caranya:Riwayat Bash/Shell yang tidak terbatas?

  1. Tujuan .bashrc Dan Bagaimana Cara Kerjanya?

  2. Memahami Arti `$_`?

  3. Bagaimana Cara Membaca Seluruh Script Shell Sebelum Mengeksekusinya?