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?
Bash-Skripte müssen, anders als Shell-Skripte, übersetzt werden.
Die #!/bin/bash-Zeile fehlt.
Das Skript hat keine Ausführungsrechte.
Das Skript ist nicht im Suchpfad.
Das Skript ist für jeden lesbar, weswegen die Sicherheitseinstellungen des Systems die Ausführung unterbinden.
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 ...
Nicht angemeldet
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!!!!