Grundlagen von Linux und der Kommandozeile

Ein ausführbares Skript run.sh im aktuellen Verzeichnis ergibt bei Eingabe von „run.sh“ die Meldung „command not found“, lässt sich aber durch Eingabe von „./run.sh“ ausführen. Was ist der Grund?

  1. Arun.sh hat kein Ausführungsrecht, und nur mit vorangestelltem ./ lässt es sich auch ohne dieses Recht ausführen
  2. BEin Befehlsname ohne Schrägstrich wird nur in den Verzeichnissen der Umgebungsvariable PATH gesucht, und das aktuelle Verzeichnis gehört in der Regel nicht dazu
  3. CDas #!/bin/bash in der ersten Zeile von run.sh (Shebang) wird nur gelesen, wenn das Skript mit vorangestelltem ./ ausgeführt wird
Antwort und Erläuterung anzeigen

Antwort: B. Ein Befehlsname ohne Schrägstrich wird nur in den Verzeichnissen der Umgebungsvariable PATH gesucht, und das aktuelle Verzeichnis gehört in der Regel nicht dazu

Erhält die Shell einen Befehlsnamen ohne Schrägstrich, durchsucht sie der Reihe nach die Verzeichnisse, die in der Umgebungsvariable PATH durch Doppelpunkte getrennt aufgeführt sind (/usr/local/bin:/usr/bin usw.), und führt das Gefundene aus. Das aktuelle Verzeichnis wird in der Regel nicht in PATH aufgenommen, damit nicht versehentlich ein bösartiges Programm gleichen Namens ausgeführt wird, das an anderer Stelle abgelegt wurde. Schreibt man einen Pfad mit Schrägstrich wie ./run.sh, wird diese Datei direkt ausgeführt, ohne PATH zu durchsuchen. Das #!/bin/bash in der ersten Zeile (Shebang) legt unabhängig von der Startweise den Interpreter fest, der das Skript ausführt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Welche Kombination der Ausgaben der beiden bash -c-Befehle ergibt sich, wenn die obigen Befehle nacheinander ausgeführt werden?
  2. Was ist die Hauptaufgabe eines Paketverwaltungssystems unter Linux (apt bei Debian-basierten Systemen, dnf bei Red-Hat-basierten Systemen usw.)?
  3. Was ist auf einem Linux-System mit systemd der Unterschied zwischen „systemctl start license.service“ und „systemctl enable license.service“ für den Dienst license.service?
  4. In cron wurde „30 2 * * 1 /home/alice/backup.sh“ eingetragen. Wann wird backup.sh ausgeführt?
  5. Ein Linux-Server warnt, dass der freie Speicherplatz knapp wird. Welche Kombination aus einem Befehl, der Belegung und freien Platz je Dateisystem anzeigt, und einem Befehl, der den von den Dateien in einem Verzeichnis belegten Platz aufsummiert, ist richtig?