Was ist der Zweck von .bashrc und wie funktioniert es?

Was ist der Zweck von .bashrc und wie funktioniert es?

Ich habe die .bashrcDatei gefunden und möchte wissen, welchen Zweck/welche Funktion sie hat. Und wie und wann wird sie verwendet?

Antwort1

.bashrcist ein BashShell-Skriptdass Bash ausgeführt wird, wenn es interaktiv gestartet wird. Es initialisiert eine interaktive Shell-Sitzung. Sie können in diese Datei jeden Befehl einfügen, den Sie auch in der Eingabeaufforderung eingeben könnten.

Sie können hier Befehle eingeben, um die Shell für die Verwendung in Ihrer speziellen Umgebung einzurichten oder Dinge nach Ihren Wünschen anzupassen. Häufig werden folgende Befehle eingegeben .bashrc:Aliasedass Sie immer erreichbar sein möchten.

.bashrcläuft aufjedeninteraktiver Shell-Start. Wenn Sie sagen:

$ bash ; bash ; bash

und dann Ctrl-Ddreimal schlagen, .bashrcwird dreimal laufen. Aber wenn Sie stattdessen dies sagen:

$ bash -c exit ; bash -c exit ; bash -c exit

wird dann .bashrcüberhaupt nicht ausgeführt, da -cder Bash-Aufruf nicht interaktiv ist. Dasselbe gilt, wenn Sie ein Shell-Skript aus einer Datei ausführen.

Im Gegensatz dazu .bash_profilewerden .profilesie nur beim Start einer neuen Login-Shell ausgeführt. ( bash -l) Sie wählen, ob ein Befehl in .bashrcvs ausgeführt wird .bash_profile, je nachdem, ob er einmal oder bei jedem Start der interaktiven Shell ausgeführt werden soll.

Als Gegenbeispiel zu Aliasnamen, die ich lieber in einfüge , möchten Sie stattdessen Anpassungen in .bashrcvornehmen , da diese Änderungen normalerweise nichtPATH.bash_profileidempotent:

export PATH="$PATH:/some/addition"

Wenn Sie das stattdessen einfügen .bashrc, wird es jedes Mal, wenn Sie eine interaktive Unter-Shell starten, :/some/additionan das Ende angehängt PATH, was bei einer falschen Eingabe eines Befehls zusätzliche Arbeit für die Shell bedeutet.

Sie erhalten eine neue interaktive Bash-Shell, wann immer SieSchale ausvimit :shbeispielsweise .

Antwort2

Der Zweck einer .bashrcDatei besteht darin, einen Ort bereitzustellen, an dem Sie Variablen, Funktionen und Aliase einrichten, Ihre (PS1-)Eingabeaufforderung definieren und andere Einstellungen festlegen können, die Sie jedes Mal verwenden möchten, wenn Sie ein neues Terminalfenster öffnen.

Es funktioniert, indem es jedes Mal ausgeführt wird, wenn Sie ein neues Terminal, Fenster oder einen neuen Bereich öffnen.

Ein superminimales Modell könnte Folgendes haben:

export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"

Das ist alles, was Sie wirklich wissen müssen, um loszulegen


Hier ist die „Overkill“-Version, nützlich für erfahrene Entwickler:

Ein erfahrener Entwickler hat oft viel mehr.
Sie können meinen hier sehen(Bild mit Syntaxhervorhebung):

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"

Erläuterung:

-1. Richten Sie meine Verlaufsdatei so ein, dass Duplikate ignoriert werden und sie viel größer als die Standarddatei ist.
-2. Farboption, lsje nachdem, ob Sie Linux oder OSX verwenden
-3. Funktion „ md“ zum Erstellen und Wechseln in ein Verzeichnis mit einem Befehl
-4. Suchen Sie den aktuellen Git-Zweig, wenn Sie sich in einem Git-Repo befinden, und …
-5. -9. Definieren Sie eine tolle PS1-Eingabeaufforderung, wie in <code>20:00:43 durrantm Castle2012 /hom/durrantm/Dropnot/_/rails_apps/linker master \n $ _</code>
-10. Verbesserte PS2-Eingabeaufforderung
-11. Legen Sie vi als Editor in der Befehlszeile fest
-12. Legen Sie vi als Standard-Editor fest
-13. Führen Sie meine .bash_aliasesDatei aus, falls sie vorhanden ist
-14. Führen Sie mein Git-Tab-Vervollständigungsskript aus (für Remotes und Zweige), falls es vorhanden ist.
-15. Führen Sie Autojump aus, falls es vorhanden ist
-16. Wechseln Sie ohne Eingeben des CD-Teils, wenn die Bash-Version >= 4 ist
-17. Führen Sie ein Bash-Vervollständigungsskript aus, falls es vorhanden ist
-18. Verwenden Sie TMUX, falls vorhanden
-19. Fügen Sie rvm zu meinem PATH hinzu
-20. Verwenden Sie rvm, falls es vorhanden ist

Ich habe es portabel gemacht, sodass es auf jedem meiner Linux- oder OSX-Rechner ohne Anpassung funktioniert. Daher werden vor der Verwendung bestimmter Funktionen und anderer Skripte eine Reihe von Tests auf Vorhandensein durchgeführt.

Dadurch lässt sich die gesamte Datei auch leichter sofort auf einem neuen Computer verwenden, ohne dass beim Öffnen eines neuen Terminalfensters Probleme auftreten.

ERINNERUNG - wenn Sie Ihre .bashrc ändern, öffnen Sie unbedingt ein neues Terminalfenster, um sicherzustellen, dass es funktioniert, BEVOR Sie neu starten (Best Practice - tun Sie dies sofort nach der Änderung). Wenn Sie jemals Ihre .bashrc durcheinanderbringen und neu starten, KÖNNEN SIE SICH MÖGLICHERWEISE NICHT ANMELDEN! Ich persönlich erstelle auf privaten Rechnern auch einen zweiten „Admin“-Benutzer, damit ich mich in einem solchen Notfall (fehlgeschlagene Anmeldung) dort anmelden und dann mit sudo meine andere Anmelde-.bashrc-Datei reparieren kann.

Antwort3

Es ist eine bashKonfigurationsdatei.

Interaktive (nicht anmeldende) Shells, dann wird die Konfiguration aus diesen Dateien gelesen:

  • $HOME/.bashrc

Für Login-Shells wird die Konfiguration aus diesen Dateien gelesen:

  • /etc/profile(Immer mit Quellenangabe)
  • $HOME/.bash_profile(die restlichen Dateien werden der Reihe nach geprüft, bis eine gefunden wird, dann werden keine weiteren mehr gelesen)
  • $HOME/.bash_login
  • $HOME/.profile

Eine einfache Darstellung, wie/wann sie geladen werden, finden Sie im Bild unten.

Ich habe ein echozu meinem hinzugefügt .bashrcund.bash_profile

Interaktive Shell vs. Login-Shell

man bashWeitere Informationen finden Sie unter

verwandte Informationen