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?

pRAShANT
quelle

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?

Costin Gușă
quelle
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.

adebaumann
quelle
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.

ssssteffff
quelle
Ich habe einen Erfolgsstatus (d. H. 0) bei der Ausführung echo $?
pRAShANT