Jawaban:
.bashrc
adalah 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 .bashrc
adalah alias yang Anda ingin selalu tersedia.
.bashrc
berjalan pada setiap peluncuran shell interaktif. Jika Anda mengatakan:
$ bash ; bash ; bash
dan kemudian tekan Ctrl-Dtiga kali, .bashrc
akan berjalan tiga kali. Tetapi jika Anda mengatakan ini sebagai gantinya:
$ bash -c exit ; bash -c exit ; bash -c exit
maka .bashrc
tidak akan berjalan sama sekali, karena -c
membuat panggilan Bash non-interaktif. Hal yang sama berlaku ketika Anda menjalankan skrip shell dari file.
Kontras .bash_profile
dan .profile
yang hanya berjalan di awal shell login baru. ( bash -l
) Anda memilih apakah perintah masuk .bashrc
vs .bash_profile
tergantung 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 PATH
penyesuaian .bash_profile
, karena perubahan ini biasanya tidak idempoten :
export PATH="$PATH:/some/addition"
Jika Anda memasukkannya .bashrc
sebagai gantinya, setiap kali Anda meluncurkan sub-shell interaktif, :/some/addition
akan ditempelkan ke akhir PATH
lagi, menciptakan kerja ekstra untuk shell ketika Anda salah ketik perintah.
Anda mendapatkan shell Bash interaktif baru setiap kali Anda keluarvi
dengan :sh
, misalnya.
.bashrc
ketika dimulai sebagai shell login. Ini terkadang dapat menyebabkan perilaku yang tidak terduga . Solusi yang biasa digunakan adalah sumber .bashrc
dari .profile
atau .bash_profile
sebagai gantinya.
.bashrc
tidak dimaksudkan untuk digunakan oleh shell lain, lebih baik untuk tidak mengambilnya .profile
(yang mungkin digunakan oleh non- bash
shell lain).
source ~/.bashrc
atau . ~/.bashrc
atau [[ -f ~/.bashrc ]] && source. ~/.bashrc
atau [ -f ~/.bashrc ] && source ~/.bashrc
tidak bekerja?
.bashrc
memang bersumber (menggunakan perintah yang direkomendasikan dari superuser.com/a/183980/128768 ). Masalah yang saya hadapi sebenarnya tidak sourcing dari https://github.com/junegunn/fzf
melalui perintah ini di dalam .bashrc
: source ~/.fzf.bash
. Saya meluncurkan terminal baru, kemudian Ctrl
+ R
dan saya dapatkan `__fzf_history__`bash: fzf: command not found
. Saya sumber secara manual .bashrc
dan pintasan tombol yang sama meluncurkan fzf seperti yang diharapkan. Permintaan maaf untuk kebisingan di sini.
Tujuan suatu .bashrc
file 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 ls
bergantung 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_aliases
file 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 bash
file konfigurasi.
Kerang interaktif (non-login), maka konfigurasi dibaca dari file-file ini:
$HOME/.bashrc
Untuk 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/.profile
Ilustrasi sederhana tentang bagaimana / kapan mereka dimuat adalah pada gambar di bawah ini.
Saya menambahkan echo
ke .bashrc
dan.bash_profile
lihat man bash
untuk informasi lebih lanjut
.bashrc
dan membedakan perbedaan antara .bashrc
dan .bash_profile
yang 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.