Frage 102-4

Sie wollen ein Bash-Skript schreiben, aber es lässt sich nicht direkt als Kommando ausführen. Was könnten mögliche Gründe sein?

  1. Bash-Skripte müssen, anders als Shell-Skripte, übersetzt werden.

  2. Die #!/bin/bash-Zeile fehlt.

  3. Das Skript hat keine Ausführungsrechte.

  4. Das Skript ist nicht im Suchpfad.

  5. Das Skript ist für jeden lesbar, weswegen die Sicherheitseinstellungen des Systems die Ausführung unterbinden.

  6. Es existiert ein Programm gleichen Namens, das stattdessen ausgeführt wird.

LPI-Lernziel Die Shell-Umgebung anpassen und verwenden (105.1)

Shellskripte, egal für welche Shell, können mit einem beliebigen Texteditor als Textdatei erstellt werden (Antwort 1 ist also falsch). Durch den Aufruf von chmod +x script werden sie anschliessend ausführbar gemacht und kommen als »Kommandos« in Frage; ohne Ausführungsrechte müssen Sie explizit eine Shell aufrufen (Antwort 3 ist also richtig).

Soll ein Skript mit einer bestimmten Shell, etwa der Bash, ausgeführt werden, muss diese in der ersten Zeile benannt werden:

#!/bin/bash

Ist keine solche Zeile angegeben, wird standardmäßig /bin/sh zur Ausführung der Datei herangezogen (bei vielen, aber nicht allen Linux-Distributionen ist auch das die Bash). Antwort 2 ist also falsch.

Selbst verfasste Skripte liegen möglicherweise in einem Verzeichnis, das nicht in der Variablen $PATH, also dem Suchpfad für Kommandos, aufgeführt ist. Sie können sie dann nicht direkt als Kommandos ausführen, sondern müssen den Verzeichnisnamen angeben. Antwort 4 ist also richtig.

Zu guter Letzt könnte es sein, dass das Verzeichnis, in dem das Skript steht, zwar im Suchpfad steht, aber nicht an erster Stelle -- und dass in einem Verzeichnis weiter vorne ein Programm mit demselben Namen zu finden ist, das dann bevorzugt wird. Besonders gemein ist es, wenn Sie ein Shellskript test nennen, da es dann sein kann, dass statt dessen das Systemprogramm test ausgeführt wird. Dieses Programm gibt leider keine Fehlermeldung aus, wenn es ohne Argumente aufgerufen wird, so dass man zuerst dazu neigt, den Fehler bei sich selbst zu suchen, und das mitunter für Stunden ...

2 Kommentare · Kommentar hinzufügen · RSS

Antwort 4 kann richtig sein

Jan Schampera (Gast) · 15. Mai 2010, 12:28

Die Erklärung warum Antwort 4 falsch ist ist nicht korrekt.

Hier ist immer von "Bash Skripten" die Rede, Bash Skripte im Allgemeinen müssen von Bash interpretiert werden. Die Ausnahme bildet POSIX-kompatibler Code.

Antwort 4 durch "/bin/sh ist sowieso meistens /bin/bash" auszuschliessen ist völlig inkorrekt. Dann lieber diese Antwortmöglichkeit streichen.

Antwort 4 kann richtig sein

FSK (Gast) · 8. Dezember 2010, 14:26

Ich glaube Du meinst Antwort 6, zumindest ist es jetzt die 6. Dem stimme ich zu, man kann sich nicht darauf verlassen dass, die fehlende Zeile interpretiert wird. Daher ist Antwort ehr Richtig als Falsch!!!!

Wichtig

LPI-Logo

Die LPI Academy ist keine offizielle Webseite des LPI!

Sponsor

Linup-Front-Logo

Die LPI Academy wird für die Community unterstützt von der Linup Front GmbH

A Django Site

Diese Seite

Version: 0 (Anselm)
22.8.2009 12:04:16

Benutzer

Nicht angemeldet

Kommentare

RSS