Jawaban:
.bashrcadalah skrip shell yang dijalankan Bash setiap kali dijalankan secara interaktif. Ini menginisialisasi sesi shell interaktif. Anda bisa meletakkan perintah apa pun di file itu yang bisa Anda ketik di command prompt.
Anda menempatkan perintah di sini untuk mengatur shell untuk digunakan di lingkungan khusus Anda, atau untuk menyesuaikan hal-hal sesuai preferensi Anda. Hal yang umum untuk dimasukkan .bashrcadalah alias yang Anda ingin selalu tersedia.
.bashrcberjalan pada setiap peluncuran shell interaktif. Jika Anda mengatakan:
$ bash ; bash ; bash
dan kemudian tekan Ctrl-Dtiga kali, .bashrcakan berjalan tiga kali. Tetapi jika Anda mengatakan ini sebagai gantinya:
$ bash -c exit ; bash -c exit ; bash -c exit
maka .bashrctidak akan berjalan sama sekali, karena -cmembuat panggilan Bash non-interaktif. Hal yang sama berlaku ketika Anda menjalankan skrip shell dari file.
Kontras .bash_profiledan .profileyang hanya berjalan di awal shell login baru. ( bash -l) Anda memilih apakah perintah masuk .bashrcvs .bash_profiletergantung pada apakah Anda ingin dijalankan sekali atau untuk setiap shell interaktif mulai.
Sebagai contoh berlawanan dengan alias, yang saya pilih untuk dimasukkan .bashrc, Anda ingin melakukan PATHpenyesuaian .bash_profile, karena perubahan ini biasanya tidak idempoten :
export PATH="$PATH:/some/addition"
Jika Anda memasukkannya .bashrcsebagai gantinya, setiap kali Anda meluncurkan sub-shell interaktif, :/some/additionakan ditempelkan ke akhir PATHlagi, menciptakan kerja ekstra untuk shell ketika Anda salah ketik perintah.
Anda mendapatkan shell Bash interaktif baru setiap kali Anda keluarvi dengan :sh, misalnya.
.bashrcketika dimulai sebagai shell login. Ini terkadang dapat menyebabkan perilaku yang tidak terduga . Solusi yang biasa digunakan adalah sumber .bashrcdari .profileatau .bash_profilesebagai gantinya.
.bashrctidak dimaksudkan untuk digunakan oleh shell lain, lebih baik untuk tidak mengambilnya .profile(yang mungkin digunakan oleh non- bashshell lain).
source ~/.bashrcatau . ~/.bashrcatau [[ -f ~/.bashrc ]] && source. ~/.bashrcatau [ -f ~/.bashrc ] && source ~/.bashrctidak bekerja?
.bashrcmemang bersumber (menggunakan perintah yang direkomendasikan dari superuser.com/a/183980/128768 ). Masalah yang saya hadapi sebenarnya tidak sourcing dari https://github.com/junegunn/fzfmelalui perintah ini di dalam .bashrc: source ~/.fzf.bash. Saya meluncurkan terminal baru, kemudian Ctrl+ Rdan saya dapatkan `__fzf_history__`bash: fzf: command not found. Saya sumber secara manual .bashrcdan pintasan tombol yang sama meluncurkan fzf seperti yang diharapkan. Permintaan maaf untuk kebisingan di sini.
Tujuan suatu .bashrcfile adalah untuk menyediakan tempat di mana Anda dapat mengatur variabel, fungsi dan alias, menentukan prompt (PS1) Anda dan menetapkan pengaturan lain yang ingin Anda gunakan setiap mulai membuka jendela terminal baru.
Ini bekerja dengan dijalankan setiap kali Anda membuka terminal, jendela atau panel baru.
Anda dapat melihat milik saya di sini (foto dengan penyorotan sintaks) :
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"
Penjelasan:
-1. Setel file riwayat saya untuk mengabaikan duplikat dan jauh lebih besar dari standar.
-2. Pilihan warna untuk lsbergantung pada apakah Anda menggunakan linux atau OSX
-3. Fungsi " md" untuk membuat dan cd ke direktori dengan satu perintah
-4. Temukan cabang git saat ini jika dalam git repo dan ...
-5. -9. Definisikan prompt PS1 yang luar biasa, seperti pada 
-10. Peningkatan prompt PS2
-11. Tetapkan vi sebagai editor pada baris perintah
-12. Tetapkan vi sebagai editor default
-13. jalankan .bash_aliasesfile saya jika ada
-14. Jalankan skrip penyelesaian tab git saya (untuk remote dan cabang) jika ada.
-15. Jalankan autojump jika ada
-16. Izinkan cd'ing tanpa mengetikkan bagian cd jika versi bash> = 4
-17. Jalankan skrip penyelesaian bash jika ada
-18. Gunakan TMUX jika ada
-19. Tambahkan rvm ke PATH
-20 saya . Gunakan rvm jika ada.
Saya telah membuat portable ini sehingga bekerja pada sembarang mesin linux atau OSX saya tanpa penyesuaian - karenanya sejumlah tes untuk kehadiran dilakukan sebelum menggunakan fungsi-fungsi tertentu dan skrip lainnya.
Ini juga membuatnya lebih mudah untuk menggunakan seluruh file segera di mesin baru tanpa memiliki masalah yang mempengaruhi membuka jendela terminal baru.
Ini adalah bashfile konfigurasi.
Kerang interaktif (non-login), maka konfigurasi dibaca dari file-file ini:
$HOME/.bashrcUntuk shell Login, konfigurasi dibaca dari file-file ini:
/etc/profile (Selalu bersumber)$HOME/.bash_profile (sisa file-file ini diperiksa secara berurutan sampai ditemukan, maka tidak ada yang lain dibaca)$HOME/.bash_login$HOME/.profileIlustrasi sederhana tentang bagaimana / kapan mereka dimuat adalah pada gambar di bawah ini.
Saya menambahkan echoke .bashrcdan.bash_profile
lihat man bashuntuk informasi lebih lanjut
.bashrcdan membedakan perbedaan antara .bashrcdan .bash_profileyang mencakup konten jawaban Anda. Jangan berkecil hati, Anda mengedepankan upaya jujur, tetapi cobalah untuk fokus pada menjawab pertanyaan dengan beberapa konten yang tidak tercakup oleh jawaban lain.