Shell-Skript läuft nicht wie bei "./", sondern bei "sh"


2

Ich führe als Superuser, d. H. Als Root-User, ein Skript auf dem Arm Target Board aus. Aber das Skript wird nicht ausgeführt, wenn ich es mit der folgenden Syntax ausführe

root@freescale$ ./Script.sh 
-sh: ./Script.sh: Permission denied

Ich habe bereits die Lese- und Ausführungsberechtigungen (+ rx) mit dem Befehl chmod vergeben. Beim Ausführen des Befehls "ls -l" erhalte ich folgende Attribute

root@freescale$ ls -l | grep Script.sh
-rw-rw-rw-    1 root     root          362 Jul  2 08:47 Script.sh

"x" ist nicht in der Dateiattributspalte vorhanden, wohingegen der Befehl "chmod" erfolgreich ausgeführt wurde. Andererseits wird dieses Skript ausgeführt, wenn ich es als ausführe

root@freescale$ sh Script.sh 

Kann mir jemand helfen, diese Situation zu beantworten?

Antworten:


1

Selbst wenn Ihr "chmod" erfolgreich ist, wird das Ausführungsbit nicht wirklich aktiviert, wie "ls" zeigt. Ich komme daher zu dem Schluss, dass etwas Sie transparent daran hindert, den Dateimodus im Dateisystem zu ändern.

Was zeigt "lsattr Script.sh"?

Können Sie das Skript auf ein RAM-Laufwerk oder ein anderes Dateisystem auf demselben Host kopieren und erneut versuchen?


Es gibt folgenden Fehler: lsattr: Inappropriate ioctl for device While reading flags on Script.sh
pRAShANT

Auf welchem ​​Dateisystem ist Script.sh gespeichert? Siehe auch die zweite Frage, die ich gestellt habe
Costin Gușă

Nun, ich habe es auf ein Flash-Laufwerk (Typ vfat) gelegt und auf / mnt-Partition gemountet. Und das rootfs, das ich benutze, ist UBIFS. Ich führe es direkt vom Flash-Laufwerk aus. Auf einem anderen System läuft es problemlos
pRAShANT

Dieses Thema wurde diskutiert Hier und Hier . Es scheint unmöglich, ein Skript von einem solchen Gerät auszuführen. Vielleicht werfen Sie einen Blick auf den Beitrag zu erwähnen mount mit exec im zweiten thread.
ssssteffff

1
Eine weitere Abhilfe wäre das Hinzufügen alias Script="sh Script.sh" zu deinem .bash_profile.
Scott

1

In Ihrem Skript sind die Ausführungsrechte für niemanden festgelegt. Versuchen:

chmod u+x Script.sh

und der Eigentümer der Datei sollte in der Lage sein, sie mit ./Script.sh zu starten

Ähnlich,

chmod g+x Script.sh
chmod o+x Script.sh

arbeiten Sie, wenn Sie möchten, dass die Gruppe (g) oder jemand (o) sie ausführen darf.


Ich habe es versucht, aber es ist immer noch das gleiche, keine Änderung
pRAShANT

0

Die Datei muss "ausführbar" sein, um mit ausgeführt zu werden ./Script.sh.

Benutzen chmod +x Script.sh um das "Ausführen" -Flag für diese Datei hinzuzufügen.

BEARBEITEN

Entschuldigung, ich habe ein wichtiges Detail in Ihrem Beitrag verpasst, das haben Sie bereits getan, aber es hat nicht funktioniert ... Versuchen Sie, es auszuführen chmod wieder, dann sofort ausführen echo $? um den Exit-Status zu erhalten, kann es hilfreich sein.


Ich habe einen Erfolgsstatus (d. H. 0) bei der Ausführung echo $?
pRAShANT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.