Wie kann ich eine Datei ausführen, ohne mir die Ausführungsberechtigung (mit chmod u+x
) dafür zu erteilen?
Wenn ich versuche, das Häkchen "Ausführen der Datei als Programm zulassen" zu aktivieren, wird das Häkchen sofort entfernt.
permissions
executable
kiri
quelle
quelle
Antworten:
Überprüfen Sie den Dateibesitz
Bitte tun Sie dies vor allen weiteren Schritten (es sei denn, Sie sind sicher, dass Sie die Datei besitzen).
Überprüfen Sie, ob Sie die Datei besitzen, die Sie mit einer der folgenden Methoden ausführen möchten.
Grafisch
Befehlszeile
Führen Sie diesen Befehl in einem Terminal aus
You don't own the file
" gedruckt wird , siehe "Ändern des Dateibesitzes" weiter unten.Ändern Sie den Dateibesitz
Führen Sie diesen Befehl in einem Terminal aus
Ausführbare Dateien
Eine Antwort , die ich von einem gefundenen Kommentar von Lekensteyn auf einer Antwort für eine Frage über
chmod
auf NTFS - Partitionen , die ich denke , es ist die eigene Frage und Antwort, die volle Punktzahl zu Lekensteyn verdient.Verwenden Sie diesen Befehl für ausführbare Dateien (ersetzen Sie ihn
/path/to/executable
durch den richtigen Pfad):64-Bit-ausführbare Dateien:
32-Bit-ausführbare Dateien:
Wenn dies nicht funktioniert (oder Fehler bei nicht gefundenen Dateien auslöst), versuchen Sie dies vor dem obigen Befehl
Alle oben genannten Befehle funktionieren nicht für textbasierte Skripte (Bash, Python, Perl usw.), siehe unten.
Überprüfen Sie, ob ein Programm 64 oder 32 Bit ist
Verwenden Sie diesen Befehl, um herauszufinden, ob eine ausführbare Datei 32 (
x86
) oder 64 (x86-64
) Bit istWenn es heißt
i386:x86-64
, dann ist es 64 Bit. Wenn esi386
nur heißt , dann ist es 32 Bit.Skripte
Für textbasierte Skripte (Bash, Python, Perl usw.) sollten Sie den in der ersten
#!
Zeile der Datei angegebenen Befehl verwenden.Zum Beispiel, wenn die erste Zeile der Datei ist
Führen Sie diese Befehle dann in einem Terminal aus (ersetzen Sie sie
/path/to/file
durch den richtigen Pfad).Java-
.jar
DateienFür ausführbare Java-JARs können Sie einfach die folgenden Befehle verwenden (
/path/to/jar
durch den richtigen Pfad ersetzen ):Wenn du nicht brauchst
cd "$(dirname /path/to/file)"
Dies sind mögliche Umstände, die Sie nicht verwenden müssen,
cd "$(dirname /path/to/file)"
bevor Sie das Programm mit einer Methode ausführen: Wenn mindestens eine wahr ist, müssen Sie diese nichtcd
zuerst ausführen .apt-get
)cd
(oder gleichwertig) in einen absoluten Pfad zu ändern , bevor sie eine Dateioperationen zu tun (Beispiel:cd "$(dirname "$0")"
)./
oder ohne Schrägstrich beginnen)Wenn Sie sich nicht sicher sind, fügen Sie
cd "$(dirname "$0")"
(oder ein gleichwertiges Element) oben im Skript hinzu (falls zutreffend) oder verwenden Sie escd "$(dirname /path/to/file)"
trotzdem.quelle
Wenn es sich um ein Shell-Skript handelt, können Sie es aus einem anderen Shell-Skript "beziehen", dh:
Das "$ @" hängt bei Bedarf die Befehlszeilenparameter an.
Trotzdem ist dies wahrscheinlich nicht die beste Lösung für das zugrunde liegende Problem, aber wir wissen nicht genug über dieses Problem, um Alternativen anzubieten.
quelle
bash script $@