Ich habe die .bashrc
Datei gefunden und möchte wissen, welchen Zweck/welche Funktion sie hat. Und wie und wann wird sie verwendet?
Antwort1
.bashrc
ist 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.
.bashrc
läuft aufjedeninteraktiver Shell-Start. Wenn Sie sagen:
$ bash ; bash ; bash
und dann Ctrl-Ddreimal schlagen, .bashrc
wird 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 -c
der Bash-Aufruf nicht interaktiv ist. Dasselbe gilt, wenn Sie ein Shell-Skript aus einer Datei ausführen.
Im Gegensatz dazu .bash_profile
werden .profile
sie nur beim Start einer neuen Login-Shell ausgeführt. ( bash -l
) Sie wählen, ob ein Befehl in .bashrc
vs 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 .bashrc
vornehmen , da diese Änderungen normalerweise nichtPATH
.bash_profile
idempotent:
export PATH="$PATH:/some/addition"
Wenn Sie das stattdessen einfügen .bashrc
, wird es jedes Mal, wenn Sie eine interaktive Unter-Shell starten, :/some/addition
an 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 ausvi
mit :sh
beispielsweise .
Antwort2
Der Zweck einer .bashrc
Datei 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, ls
je 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
-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_aliases
Datei 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 bash
Konfigurationsdatei.
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 echo
zu meinem hinzugefügt .bashrc
und.bash_profile
man bash
Weitere Informationen finden Sie unter