Normalerweise die Funktion von echo
Der Befehl besteht darin, eine Zeichenfolge (ein Stück Text) auf der Konsole anzuzeigen. Aber diesmal eine >
Zeichen wird nach echo
hinzugefügt Befehl, der seine Ausgabe in eine Textdatei umleitet, /etc/apt/sources.list.d/ros-latest.list
.
Im Grunde schreibt dieser ganze Befehl also ein Stück Text in eine Textdatei. Jetzt kommt der knifflige Teil:
Die in die Datei geschriebene Zeichenfolge kann für jeden Computer unterschiedlich sein. Das Teil $(lsb_release -sc)
aufgelöst (in etwas anderes geändert) wird, wenn echo
Befehl wird ausgeführt.
Sie können /etc/apt/sources.list.d/ros-latest.list
öffnen in einem Texteditor vor und nach dem Befehl, um die Änderung selbst zu sehen. (Die Datei existiert möglicherweise nicht vor diesem Befehl.)
Paketverwaltung und Software-Repositories
Auf Debian basierende Linux-Distributionen verlassen sich auf Repositories (Datenbanken mit Anwendungsinstallationspaketen und Upgrade-Paketen), um die Betriebssysteme auf dem neuesten Stand zu halten und neue Softwarepakete einfach herunterzuladen und zu installieren. Der Ort dieser Repositories wird in /etc/apt/sources.list
gespeichert , jedoch können zusätzliche Quellen, die normalerweise nur für bestimmte Anwendungen gelten, in /etc/apt/sources.list.d
gespeichert werden Verzeichnis.
Wenn der Paketindex-Aktualisierungsbefehl apt-get update
ausgeführt wird, prüft Ihr Betriebssystem diese Paket-Repositorys auf verfügbare Pakete und registriert die verfügbare Software als für Ihr Betriebssystem verfügbar, die Sie dann mit dem herkömmlichen apt-get install <package>
installieren können Befehl.
Ein Beispiel für eine dieser Softwarequellen ist:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
Es ist wichtig, dass diese Quellen auf bestimmte Versionen von Linux-Distributionen verweisen. Ein Beispiel ist trusty Dies ist der Codename für Ubuntu 14.04. Sie können Ihr Betriebssystem (auf Debian basierend) mit lsb_release -a
nach vollständigen Details abfragen oder lsb_release -sc
was kurz bedeutet und Codename .
In Ihrer Frage der Teil $(lsb_release -sc)
interpretiert und das Ergebnis von Ihrem Betriebssystem gedruckt in die benutzerdefinierte Quelldatei ros-latest.list die der Befehl bei der Ausführung erstellt.
Befehlsspracheninterpreter
Die sh
Befehl ist die Bourne-Shell. Dies ist eine von mehreren Shells, wird aber als alter Standard angesehen und ist im Allgemeinen einer, von dem Sie sicher sein können, dass er existiert. Es ist auch üblich, bash
zu sehen in vielen Shell-Skripten. Diese Deklaration gibt die zu verwendende Shell an, da verschiedene Shells unterschiedliche Syntax verwenden.
In Bezug auf -c
Flag, unter Anführung von man bash
:
Wenn die Option -c vorhanden ist, werden Befehle aus Zeichenfolge gelesen. Wenn hinter der Zeichenkette Argumente stehen, werden sie den Positionsparametern zugewiesen, beginnend mit $0.
Alles innerhalb von ''
als String gelesen wird, müssten Sie nicht herausfinden, wie Sie verschiedenen Anführungszeichen entkommen oder sich Sorgen darüber machen, dass die Shell etwas falsch interpretiert.
tl;dr
Der Befehl gibt deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
aus in eine benutzerdefinierte Quelldatei, wobei $(lsb_release -sc)
ersetzt wird mit dem interpretierten Wert.