Wenn Sie sich bei einer Linux-Shell anmelden, erben Sie eine bestimmte Arbeitsumgebung. Eine Umgebung bedeutet im Kontext einer Shell, dass bestimmte Variablen bereits für Sie festgelegt sind, wodurch sichergestellt wird, dass Ihre Befehle wie beabsichtigt funktionieren. Beispielsweise definiert die Umgebungsvariable PATH, wo Ihre Shell nach Befehlen sucht. Ohne sie würde fast alles, was Sie in Bash versuchen, mit einem Befehl nicht gefunden fehlschlagen Error. Ihre Umgebung ist zwar für Sie bei Ihren alltäglichen Aufgaben meist unsichtbar, aber von entscheidender Bedeutung.
Es gibt viele Möglichkeiten, Ihre Shell-Umgebung zu beeinflussen. Sie können Änderungen in Konfigurationsdateien wie ~/.bashrc
vornehmen und ~/.profile
, können Sie beim Start Dienste ausführen und Ihre eigenen benutzerdefinierten Befehle erstellen oder Ihre eigenen Bash-Funktionen skripten.
Mit Quelle zu Ihrer Umgebung hinzufügen
Bash hat (zusammen mit einigen anderen Shells) einen eingebauten Befehl namens source
. Und hier kann es verwirrend werden:source
hat dieselbe Funktion wie der Befehl .
(ja, das ist nur ein einzelner Punkt), und es ist nicht dieselbe source
als Tcl
Befehl (der möglicherweise auf Ihrem Bildschirm erscheint, wenn Sie man source
eingeben ). Die eingebaute source
Befehl befindet sich nicht in Ihrem PATH
eigentlich überhaupt. Es ist ein Befehl, der Teil von Bash ist, und um weitere Informationen darüber zu erhalten, können Sie help source
eingeben .
Der .
Der Befehl ist POSIX-kompatibel. Die source
Der Befehl wird nicht von POSIX definiert, ist aber mit .
austauschbar Befehl.
Mehr über Bash
- Bash-Spickzettel
- Eine Einführung in die Programmierung mit Bash
- Eine Anleitung für Systemadministratoren zum Bash-Scripting
- Neueste Bash-Artikel
Laut Bash help
, die source
Befehl führt eine Datei in Ihrer aktuellen Shell aus. Die Klausel "in Ihrer aktuellen Shell" ist wichtig, weil sie bedeutet, dass sie keine Sub-Shell startet; daher, was auch immer Sie mit source
ausführen geschieht innerhalb und beeinflusst Ihren Strom Umgebung.
Bevor Sie erkunden, wie source
Ihre Umgebung beeinträchtigen kann, versuchen Sie es mit source
auf eine Testdatei, um sicherzustellen, dass Code wie erwartet ausgeführt wird. Erstellen Sie zunächst ein einfaches Bash-Skript und speichern Sie es als Datei mit dem Namen hello.sh
:
#!/usr/bin/env bash
echo "Hallo Welt"
Verwendung von source
, können Sie dieses Skript auch ohne Setzen des Executable-Bits ausführen:
$ source hello.sh
Hallo Welt
Sie können auch den integrierten .
verwenden Befehl für die gleichen Ergebnisse:
$ . hello.sh
Hallo Welt
Die source
und .
Befehle führen den Inhalt der Testdatei erfolgreich aus.
Variablen setzen und Funktionen importieren
Sie können source
verwenden um eine Datei in Ihre Shell-Umgebung zu "importieren", genauso wie Sie include
verwenden könnten Schlüsselwort in C oder C++, um auf eine Bibliothek oder den import
zu verweisen Schlüsselwort in Python, um ein Modul einzufügen. Dies ist eine der häufigsten Verwendungen für source
, und es ist eine übliche Standardeinbindung in .bashrc
Dateien nach source
eine Datei namens .bash_aliases
damit alle benutzerdefinierten Aliase, die Sie definieren, in Ihre Umgebung importiert werden, wenn Sie sich anmelden.
Hier ist ein Beispiel für den Import einer Bash-Funktion. Erstellen Sie zunächst eine Funktion in einer Datei namens myfunctions
. Dies gibt Ihre öffentliche IP-Adresse und Ihre lokale IP-Adresse aus:
Funktion myip() {
curl http://icanhazip.com
IP-Adresse | grep inet$IP | \
cut -d"/" -f 1 | \
grep -v 127\.0 | \
grep -v \:\:1 | \
awk '{$1=$1};1'
}
Importieren Sie die Funktion in Ihre Shell:
$ source myfunctions
Testen Sie Ihre neue Funktion:
$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38Nach Quelle suchen
Wenn Sie
source
verwenden in Bash durchsucht es Ihr aktuelles Verzeichnis nach der Datei, auf die Sie verweisen. Dies passiert nicht in allen Shells, also überprüfen Sie Ihre Dokumentation, wenn Sie Bash nicht verwenden.Wenn Bash die auszuführende Datei nicht finden kann, durchsucht es Ihren
PATH
stattdessen. Auch dies ist nicht die Standardeinstellung für alle Shells, überprüfen Sie also Ihre Dokumentation, wenn Sie Bash nicht verwenden.Dies sind beides nette Komfortfunktionen in Bash. Dieses Verhalten ist überraschend leistungsfähig, da es Ihnen ermöglicht, allgemeine Funktionen an einem zentralen Ort auf Ihrem Laufwerk zu speichern und Ihre Umgebung dann wie eine integrierte Entwicklungsumgebung (IDE) zu behandeln. Sie müssen sich keine Gedanken darüber machen, wo Ihre Funktionen gespeichert sind, weil Sie wissen, dass sie sich in Ihrem lokalen Äquivalent von
/usr/include
befinden , egal wo Sie sich befinden, wenn Sie sie beziehen, Bash findet sie.Beispielsweise könnten Sie ein Verzeichnis mit dem Namen
~/.local/include
erstellen als Speicherbereich für allgemeine Funktionen und fügen Sie diesen Codeblock dann in Ihre.bashrc
ein Datei:for i in $HOME/.local/include/*;
do source $i
doneDies "importiert" jede Datei, die benutzerdefinierte Funktionen in
~/.local/include
enthält in Ihre Shell-Umgebung.Bash ist die einzige Shell, die sowohl das aktuelle Verzeichnis als auch Ihren
PATH
durchsucht wenn Sie entweder diesource
verwenden oder der.
Befehl.Quelle für Open Source verwenden
Verwendung von
source
oder.
Das Ausführen von Dateien kann eine bequeme Möglichkeit sein, Ihre Umgebung zu beeinflussen und gleichzeitig Ihre Änderungen modular zu halten. Das nächste Mal denken Sie daran, große Codeblöcke zu kopieren und in Ihre.bashrc
einzufügen Datei, erwägen Sie, verwandte Funktionen oder Gruppen von Aliasen in dedizierte Dateien zu platzieren, und verwenden Sie dannsource
um sie einzunehmen.