Yanıtlar:
.bashrc
Etkileşimli olarak başlatıldığında Bash'in çalıştırdığı bir kabuk betiğidir . Etkileşimli bir kabuk oturumu başlatır. Herhangi bir komutu komut istemine yazabileceğiniz dosyaya koyabilirsiniz.
Kabuğu kendi ortamınızda kullanmak için ayarlamak veya tercihlerinize göre şeyler özelleştirmek için buraya komutları koyarsınız. Yaygın bir şey koymak için .bashrc
olan diğer adlar her zaman kullanılabilir olmasını istiyoruz.
.bashrc
Her etkileşimli kabuk başlatmasında çalışır . Eğer öyle diyorsan:
$ bash ; bash ; bash
ve sonra Ctrl-Düç kez vurmak, üç kez .bashrc
koşacak. Ama bunun yerine bunu söylerseniz:
$ bash -c exit ; bash -c exit ; bash -c exit
o .bashrc
zaman hiç yayınlanmayacak, çünkü -c
Bash çağrısı etkileşimli değil. Aynı bir dosyadan bir kabuk betiği çalıştırdığınızda geçerlidir.
Kontrast .bash_profile
ve .profile
hangileri yalnızca yeni bir giriş kabuğunun başlangıcında çalıştırılır? ( bash -l
) Bir komutun , bir kez mi çalışacağına veya her etkileşimli kabuk başlangıcında mı çalışacağına bağlı olarak mı .bashrc
girileceğini seçersiniz .bash_profile
.
Ben koymak tercih takma adları, bir karşı örnek olarak .bashrc
, yapmak istediğiniz PATH
ayarlamaları .bash_profile
bu değişiklikler genellikle olmadığından, yerine İdempotent :
export PATH="$PATH:/some/addition"
.bashrc
Bunun yerine koyarsanız, etkileşimli bir alt kabuğu her başlattığınızda, bir komutu yanlış yazdığınızda kabuk için ekstra çalışma yaratarak tekrar :/some/addition
sonuna kadar PATH
bağlanır.
Eğer her yeni bir interaktif Bash kabuk olsun dışarı kabukvi
ile :sh
örneğin.
.bashrc
bir giriş kabuğu olarak başlamış zaman. Bu bazen beklenmeyen davranışlara yol açabilir . Her zamanki geçici çözüm kaynak olduğu .bashrc
gelen .profile
veya .bash_profile
yerine.
.bashrc
Diğer mermiler tarafından kullanılması amaçlanmadığından, diğer mermiler .profile
tarafından kullanılamaz bash
.
source ~/.bashrc
veya . ~/.bashrc
veya [[ -f ~/.bashrc ]] && source. ~/.bashrc
veya [ -f ~/.bashrc ] && source ~/.bashrc
çalışmaz?
.bashrc
bunun gerçekten kaynaklandığını anladım ( superuser.com/a/183980/128768 adresinden tavsiye edilen komutu kullanarak ). Ben yüz sorun aslında değil kaynak olduğunu https://github.com/junegunn/fzf
içinde bu komutu ile .bashrc
: source ~/.fzf.bash
. Yeni bir terminal başlattım, sonra Ctrl
+ R
ve alıyorum `__fzf_history__`bash: fzf: command not found
. El .bashrc
ile kaynak ve aynı anahtar kısayolu beklendiği gibi fzf başlattı. Buradaki gürültü için özür dilerim.
Bir .bashrc
dosyanın amacı değişkenleri, işlevleri ve takma adları ayarlayabileceğiniz, (PS1) komut isteminizi tanımlayabileceğiniz ve yeni bir terminal penceresi açtığınızda her başlatmak için kullanmak istediğiniz diğer ayarları tanımlayabileceğiniz bir yer sağlamaktır.
Her yeni bir terminal, pencere veya pencere açtığınızda çalıştırılarak çalışır.
Burada benimkini görebilirsiniz (sözdizimi vurgulu resim) :
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"
Açıklama:
-1. Geçmiş dosyamı yinelemeleri yoksayacak ve varsayılandan daha büyük olacak şekilde ayarlayın.
-2. ls
Linux veya OSX
-3 kullanıp kullanmadığınıza bağlı olarak renk seçeneği . Fonksiyonu " md
" yapmak ve
-4 tek komutla bir dizine cd . Bir git repo ve ...
-5 ise mevcut git şubesini bulun . -9.
-10'da olduğu gibi harika bir PS1 istemi tanımlayın . Geliştirilmiş PS2 istemi
-11.
Vi'yi -12 komut satırında editör olarak ayarlayın .
Vi'yi varsayılan düzenleyici -13 olarak ayarlayın .
-14 .bash_aliases
varsa, dosyamı çalıştır
. Varsa git sekmesi tamamlama komut dosyasını (uzaktan kumandalar ve dallar için) yürütün.
-15.
-16 varsa otomatik atlama işlemini yürütün . Bash sürümü> = 4 ise, cd bölümünü yazmadan cd'ing yapılmasına izin verin.
-17.
-18 varsa, bir bash tamamlama komut dosyasını yürütün .
-19 varsa TMUX kullanın . PATH -20'ime rvm ekle
. Varsa rvm kullanın.
Özelleştirmeden linux veya OSX makinelerimden herhangi biri üzerinde çalışabilmesi için bu portatif bilgisayarı yaptım - bu nedenle, bazı işlevler ve diğer komut dosyalarını kullanmadan önce varlığı test etmek için bazı testler yapıldı.
Bu aynı zamanda, yeni bir terminal penceresi açılmasını etkileyen herhangi bir sorun yaşamadan, dosyanın tamamını yeni bir makinede hemen kullanmayı kolaylaştırır.
Bir bash
yapılandırma dosyasıdır.
Etkileşimli (oturum açmayan) kabukları, ardından config bu dosyalardan okunur:
$HOME/.bashrc
Giriş kabukları için, config bu dosyalardan okunur:
/etc/profile
(Her zaman kaynaklı)$HOME/.bash_profile
(bu dosyaların geri kalanı, bulunana kadar sırayla kontrol edilir, sonra başkaları okunmaz)$HOME/.bash_login
$HOME/.profile
Nasıl yüklendiklerinin / yüklendiklerinin basit gösterimleri aşağıdaki resimdedir.
Ben bir katma echo
kadar benim .bashrc
ve.bash_profile
man bash
daha fazla bilgi için bkz .
.bashrc
arasındaki farkı ayırt eder .bashrc
ve .bash_profile
Cevabınız içeriğini kapsayan. Cesaretini kırmayın, dürüst bir çaba gösterin, ancak başka cevapların kapsamadığı bazı içeriğe sahip soruları yanıtlamaya odaklanın.