Ich habe diese Frage auf dieser Website gesehen und dies hat mich dazu veranlasst, diese Frage zu stellen. Ich möchte in Unix wissen, was der Unterschied zwischen einer ausführbaren Datei und einem Shell-Skript ist.
Ich habe diese Frage auf dieser Website gesehen und dies hat mich dazu veranlasst, diese Frage zu stellen. Ich möchte in Unix wissen, was der Unterschied zwischen einer ausführbaren Datei und einem Shell-Skript ist.
Eine ausführbare Datei bezieht sich auf jede Datei mit dem gesetzten ausführbaren Bit, die ausgeführt werden könnte (selbst wenn beim tatsächlichen Ausführen des Programms Fehler auftreten).
Ein Shell-Skript ist ein bestimmter Typ einer ausführbaren Datei, die von einer Shell interpretiert werden soll, indem die #!
Anweisung zum Angeben eines Interpreters verwendet wird.
Ein Skript ist eine Datei, die:
Ein Shell-Skript ist ein Skript, dessen Interpreter eine Shell ist . In der Unix-Welt bezieht sich „Shell“ auf die Familie der Shells, die der Bourne-Shell ähneln . Moderne solche Shells (Asche, Bash, Ksh, Zsh,…) entsprechen dem POSIX- Shell-Standard. Allgemeiner kann das Wort "Shell" andere Befehlsinterpreter wie csh, tcsh, fish, ... enthalten.
Eine ausführbare Datei ist eine beliebige Datei, die ausgeführt werden kann. Um effektiv ausführbar zu sein, muss eine Datei zwei Eigenschaften haben:
ls -l
: Das x
Zeichen muss in der Berechtigungsspalte vorhanden sein.Das Format der Datei muss vom System als ausführbar erkannt werden. Ausführbare Formate können in mehrere Kategorien unterteilt werden:
#!
gefolgt von einem Pfad zu einer Datei besteht. Um eine solche Datei auszuführen, führt der Kernel das Interpreterprogramm aus und übergibt ihm den Pfad zum Skript als Argument.Beachten Sie, dass die Ausführung einer ausführbaren Datei vom System abhängt. Beispielsweise kann eine amd64 Linux-Binärdatei auf einem amd64 Linux-System ausgeführt werden, nicht jedoch auf einem 32-Bit-System. Eine Binärdatei für Android kann bei einer normalen Linux-Installation nicht ausgeführt werden. Eine ausführbare Windows-Datei kann nur unter Linux ausgeführt werden, wenn Wine vorhanden ist. Ein Skript, das mit beginnt, kann #!/usr/local/bin/ruby
nur ausgeführt werden, wenn sich ein Programm unter befindet /usr/local/bin/ruby
.
Ein Shell-Skript ist normalerweise ausführbar. Es kann jedoch nicht ausführbar sein, wenn Sie nicht über die Berechtigung zum Ausführen verfügen. Sie können es trotzdem interpretieren lassen, indem Sie es explizit an den Interpreter weitergeben (z. B. bash /path/to/script
) - "interpretieren lassen" ist eine ausgefallene Art, "ausführen" zu sagen.
Shell-Skript:
Ein Shell-Skript ist eine Reihe von Befehlen, die von einer Shell interpretiert werden (normalerweise sh oder eine sh-kompatible Shell, manchmal eine andere).
Der Skriptname kann, muss aber NICHT mit ".sh" oder ".bash" oder ".csh" usw. enden (mit einem Hinweis auf die Shell, von der er gestartet werden soll).
Aus Gründen der Klarheit gehe ich davon aus, dass der Skriptname lautet script
und die Shell, in der er gestartet werden soll, lautet bash
.
Ein typischer Weg, um es in der Shell zu starten, wäre dann: bash /absolute/path/to/the/script
oder bash ./relative/path/to/the/script
. Auf diese Weise muss das ausführbare Bit nicht gesetzt sein, da es nur von bash gelesen wird, das dann den Inhalt ausführt.
Es kann auch + x (ausführbar) gesetzt werden, damit es direkt von Ihrer aktuellen Shell-Sitzung aus gestartet werden kann mit: / absolute / path / to / the / script (oder ./relative/path/to/the/script). Achtung: Wenn es auf diese Weise gestartet wird, wird es standardmäßig über die von Ihnen eingegebene Shell oder über eine Posix-Shell gestartet (das Verhalten ist vom Betriebssystem abhängig), sodass es möglicherweise nicht die Shell sein kann, von der es ausgeführt werden soll. Aus diesem Grund können (und sollten) Sie als erste Zeile des Skripts Folgendes angeben: #! / Path / to / good / shell, das Ihrem Betriebssystem angibt, dass dieses Skript tatsächlich von / path / to / good / shell gestartet werden sollte.
ausführbar:
Eine ausführbare Datei ist eine Datei, in der das Bit "x" für die Benutzer / Gruppen gesetzt ist, von denen sie gestartet werden soll. Dies kann normalerweise eine "Binärdatei" oder ein Skript sein.
Tipp: Hier file /some/file
erfahren Sie mehr über den Inhalt der Datei. Versuchen Sie file /usr/bin/bash
oder file /etc/profile
sehen Sie einige Beispiele.