GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Importieren Sie Funktionen und Variablen mit dem Quellbefehl in Bash

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.38

Nach 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
done

Dies "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 die source 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 dann source um sie einzunehmen.


Linux
  1. Rotieren und archivieren Sie Protokolle mit dem Linux-Befehl logrotate

  2. Überwachen Sie Befehle und Aufgaben mit dem Linux-Überwachungsbefehl

  3. bash-Alias-Befehl mit einfachen und doppelten Anführungszeichen

  4. '&&' vs. '&' mit dem 'test'-Befehl in Bash

  5. Was ist der Unterschied zwischen &> und >&in bash?

Bash-Quellbefehl

Bash Exit-Befehl und Exit-Codes

Die Alias- und Unalias-Befehle mit Beispielen erklärt

Unterschied zwischen der Definition von Bash-Variablen mit und ohne Export

Was ist Source Command in Linux und wie funktioniert es?

Verwenden Sie den Bash-Verlauf, um einen vorherigen Befehl abzurufen, kopieren Sie ihn und führen Sie ihn dann aus, jedoch mit dem kommentierten Befehl