Ich habe einige Dinge, die ich in .bashrc ausführen möchte, die ich lieber in einer anderen Datei auf dem System haben würde. Wie kann ich diese Datei in .bashrc aufnehmen?
linux
shell
command-line
bash
Fragsworth
quelle
quelle
Antworten:
Fügen Sie
source /whatever/file
(oder. /whatever/file
) hinzu,.bashrc
wo die andere Datei enthalten sein soll.quelle
Um Fehler zu vermeiden, müssen Sie zuerst überprüfen, ob die Datei vorhanden ist. Dann Quelle der Datei. Mach so etwas.
# include .bashrc if it exists if [ -f $HOME/.bashrc_aliases ]; then . $HOME/.bashrc_aliases fi
quelle
if [ -f ~/.bashrc_aliases ];
funktioniert nicht.Hier ist ein Einzeiler!
[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases
Lustige Tatsache: Shell (und die meisten anderen Sprachen) sind faul. Wenn es eine Reihe von Bedingungen gibt, die durch eine Konjunktion (aka "und" aka
&&
) verbunden sind, beginnt die Auswertung von links nach rechts. In dem Moment, in dem eine der Bedingungen falsch ist, werden die restlichen Ausdrücke nicht ausgewertet, wodurch andere Ausdrücke effektiv "kurzgeschlossen" werden.Sie können also einen Befehl, den Sie ausführen möchten, rechts neben eine Bedingung stellen. Er wird erst ausgeführt, wenn jede Bedingung links als "wahr" bewertet wird.
quelle
Wenn Sie mehrere Dateien laden möchten, die möglicherweise vorhanden sind oder nicht, können Sie sie mithilfe einer for-Schleife etwas elegant halten.
files=(somefile1 somefile2) path="$HOME/path/to/dir/containing/files/" for file in ${files[@]} do file_to_load=$path$file if [ -f "$file_to_load" ]; then . $file_to_load echo "loaded $file_to_load" fi done
Die Ausgabe würde folgendermaßen aussehen:
$ . ~/.bashrc loaded $HOME/path/to/dir/containing/files/somefile1 loaded $HOME/path/to/dir/containing/files/somefile2
quelle
Ich bevorzuge es, zuerst die Version zu überprüfen und eine Variable für die Pfadkonfiguration zuzuweisen:
if [ -n "${BASH_VERSION}" ]; then filepath="${HOME}/ls_colors/monokai.sh" if [ -f "$filepath" ]; then source "$filepath" fi fi
quelle