Odpowiedzi:
.bashrcto skrypt powłoki, który Bash uruchamia za każdym razem, gdy jest uruchamiany interaktywnie. Inicjuje interaktywną sesję powłoki. W tym pliku możesz umieścić dowolne polecenie, które można wpisać w wierszu polecenia.
Tutaj umieszczasz polecenia, aby skonfigurować powłokę do użycia w określonym środowisku lub dostosować rzeczy do swoich preferencji. Wspólną rzeczą do umieszczenia .bashrcsą aliasy , które chcesz zawsze być dostępne.
.bashrcdziała przy każdym uruchomieniu interaktywnej powłoki. Jeśli powiesz:
$ bash ; bash ; bash
a następnie Ctrl-Dtrzykrotnie uderzy , .bashrcuruchomi się trzy razy. Ale jeśli powiesz to:
$ bash -c exit ; bash -c exit ; bash -c exit
wtedy w .bashrcogóle nie będzie działać, ponieważ -cpowoduje, że wywołanie Bash jest nieinteraktywne. To samo dotyczy uruchomienia skryptu powłoki z pliku.
Kontrast .bash_profilei .profilektóre są uruchamiane tylko na początku nowej powłoki logowania. ( bash -l) Ty decydujesz, czy polecenie wchodzi w .bashrctryb vs, w .bash_profilezależności od tego, czy chcesz, aby było uruchamiane raz czy przy każdym uruchomieniu interaktywnej powłoki.
W ramach kontrprzykładu do aliasów, które wolę wstawiać .bashrc, zamiast tego chcesz wprowadzić PATHzmiany .bash_profile, ponieważ zmiany te zwykle nie są idempotentne :
export PATH="$PATH:/some/addition"
Jeśli wstawisz to .bashrczamiast tego, za każdym razem, gdy uruchomisz interaktywną podpowłokę, :/some/additionzostaniesz przywiązany do końca PATHdrugiej, tworząc dodatkową pracę dla powłoki, gdy pomylisz polecenie.
Pojawi się nowy interaktywny powłoki Bash, kiedy tylko bulić odvi z :sh, na przykład.
.bashrcgdy jest uruchamiany jako powłoka logowania. Może to czasem prowadzić do nieoczekiwanego zachowania . Zwykłym obejściem jest źródło .bashrcz .profilelub .bash_profilezamiast.
.bashrcnie jest przeznaczony do użytku przez inne powłoki, lepiej nie jest źródłem .profile( z którego mogą korzystać inne bashpowłoki).
source ~/.bashrclub . ~/.bashrclub [[ -f ~/.bashrc ]] && source. ~/.bashrclub [ -f ~/.bashrc ] && source ~/.bashrcnie działa?
.bashrctak naprawdę jest to źródło (za pomocą zalecanego polecenia superuser.com/a/183980/128768 ). Problem twarz jest właściwie nie pozyskiwanie https://github.com/junegunn/fzfza pośrednictwem tej komendy wewnątrz .bashrc: source ~/.fzf.bash. Odpalam nowy terminal, a potem Ctrl+ Ri dostaję `__fzf_history__`bash: fzf: command not found. Źródło ręcznie .bashrci ten sam skrót klawiszowy uruchamia FZF zgodnie z oczekiwaniami. Przepraszamy za hałas tutaj.
Celem .bashrcpliku jest zapewnienie miejsca, w którym można skonfigurować zmienne, funkcje i aliasy, zdefiniować monit (PS1) i zdefiniować inne ustawienia, których chcesz używać za każdym razem, gdy otwierasz nowe okno terminala.
Działa, uruchamiając się za każdym razem, gdy otwierasz nowy terminal, okno lub panel.
Możesz zobaczyć mój tutaj (zdjęcie z podświetlaniem składni) :
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"
Wyjaśnienie:
-1. Skonfiguruj mój plik historii, aby ignorował duplikaty i był znacznie większy niż domyślny.
-2. Opcja koloru w lszależności od tego, czy korzystasz z systemu Linux, czy OSX
-3. Funkcja „ md”, aby utworzyć i cd do katalogu za pomocą jednego polecenia
-4. Znajdź bieżącą gałąź git, jeśli znajdujesz się w repozytorium git i ...
-5. -9. Zdefiniuj niesamowite podpowiedź PS1, jak w 
-10. Ulepszony monit PS2
-11. Ustaw vi jako edytor w wierszu poleceń
-12. Ustaw vi jako domyślny edytor
-13. uruchom mój .bash_aliasesplik, jeśli istnieje
-14. Uruchom mój skrypt ukończenia karty git (dla pilotów i gałęzi), jeśli istnieje.
-15. Wykonaj autojump, jeśli istnieje
-16. Zezwalaj na cd'ing bez wpisywania części cd, jeśli wersja bash> = 4
-17. Wykonaj skrypt zakończenia bash, jeśli istnieje
-18. Użyj TMUX, jeśli jest obecny
-19. Dodaj rvm do mojej ŚCIEŻKI
-20. Użyj rvm, jeśli istnieje.
Zrobiłem to przenośne, aby działało na dowolnym moim komputerze z systemem Linux lub OSX bez dostosowywania - dlatego przed użyciem niektórych funkcji i innych skryptów wykonuje się szereg testów obecności.
Ułatwia to także natychmiastowe użycie całego pliku na nowym komputerze bez problemów, które wpływają na otwarcie nowego okna terminala.
Jest to bashplik konfiguracyjny.
Interaktywne (niezalogowane) powłoki, następnie konfiguracja jest odczytywana z tych plików:
$HOME/.bashrcW przypadku powłok logowania konfiguracja jest odczytywana z tych plików:
/etc/profile (Zawsze pozyskiwane)$HOME/.bash_profile (reszta tych plików jest sprawdzana po kolei, dopóki nie zostanie znaleziony, a następnie nie zostaną odczytane żadne inne)$HOME/.bash_login$HOME/.profileProsta ilustracja tego, jak / kiedy są ładowane, znajduje się na poniższym obrazku.
Dodałem echodo mojego .bashrci.bash_profile
zobacz man bashpo więcej informacji
.bashrci rozróżnia różnicę między treścią odpowiedzi .bashrca tym, .bash_profileco obejmuje. Nie zniechęcaj się, podejmujesz uczciwy wysiłek, ale staraj się koncentrować na odpowiadaniu na pytania z treściami nieobjętymi innymi odpowiedziami.