Ich denke, die Wurzel Ihres Problems ist, dass Sie den Unterschied zwischen einem Terminal-Emulator und einer Shell nicht wirklich verstehen und wie Linux herausfindet, wie Prozesse gestartet werden.
Erstens gibt es den "Terminal-Emulator", in Gnome-basierten Umgebungen ist dies normalerweise Gnome-Terminal.
Dann gibt es die "Shell", in Linux ist dies normalerweise bash, obwohl andere Shells möglich sind.
Eine "Shell" läuft in einem "Terminal Emulator". Diese Unterscheidung ergibt sich aus dem Zeitalter der physischen Terminals, in dem ein physisches Terminal die Hardware ist, die Eingaben entgegennimmt, Text in Farben schreibt usw. Die Shell ist eine Software, die Benutzerbefehle verarbeitet und andere Prozesse basierend auf den angegebenen Befehlen verwaltet.
Heutzutage haben wir einen Allzweckbildschirm, auf dem alle Bilder angezeigt werden können. Daher verwenden wir kein physisches Terminal mehr, sondern "Terminalemulatoren", eine Software, die den Job eines physischen Terminals emuliert, und die Shell, die immer noch das ist gleiche alte Shell wie zuvor (nun, moderne Shells nutzen den Vorteil, dass sie sich in einem Software-Terminal-Emulator befinden und nicht durch die physische Beschränkung eines Papiers usw. beschränkt sind, aber die Kluft bleibt bestehen).
Eine "Shell" wird nicht immer in einem Terminal-Emulator ausgeführt. Es gibt auch grafische Shell wie Nautilus (Hinweis Hinweis, Nautilus ist der Name einer Meerestier mit einer großen Shell) oder Windows Explorer (nicht zu verwechseln mit Internet Explorer).
Sowohl in einer Befehlszeilen-Shell, z. B. bash, als auch in einer grafischen Shell, z. B. Nautilus, wird eine ausführbare Datei durch execute
Setzen ihres Bits gekennzeichnet.
In einer Befehlszeilen-Shell können Sie ls -l
die Berechtigungsbits einer Datei anzeigen, z. B. bedeutet rwxrwxrwx, dass jeder das Programm lesen / schreiben / ausführen kann. rwxr-xr-- bedeutet, dass der Besitzer die volle Berechtigung hat, Personen in der Dateigruppe die Datei lesen und ausführen, aber nicht schreiben können und andere Personen nur die Datei lesen können. In Nautilus können Sie mit der rechten Maustaste auf eine Datei> Eigenschaften> Registerkarte Berechtigung klicken. Auf der Seite Berechtigungseigenschaften können Sie die Berechtigung der Datei wie in der Befehlszeilen-Shell festlegen.
Eine Datei, deren Ausführungsbit gesetzt ist, wird als ausführbar behandelt und kann durch Ausführen von ./Dateiname (Befehlszeilen-Shell) oder Doppelklicken (Grafik-Shell) ausgeführt werden.
Zuletzt gibt es ein paar andere Feinheiten, wie eine Shell eine Datei ausführt. In den meisten Linux-Shells können Sie ein in python / perl / php / bash geschriebenes Skript "ausführen", das keine kompilierte ausführbare Datei ist. Da diese Dateien nicht von Haus aus ausführbar sind, benötigen sie einen Interpreter (zB Python-Interpreter). Anders als in der Windows-Shell (Explorer), bei der der aufzurufende Interpreter über die Dateierweiterung ermittelt wird. Linux-Shells ermitteln den korrekten Interpreter, indem sie sich die "Hashbang" -Zeile ansehen, die so aussieht
#!/usr/bin/python
Wenn das Ausführungsbit einer Datei gesetzt ist und die Datei diese Hashbang-Zeile hat, ruft die Shell den Interpreter / usr / bin / python mit der aktuellen Datei als Argument auf.
Nautilus kann auch erkennen, wenn es sich bei einem Programm um eine Befehlszeilenanwendung handelt, und bietet Ihnen an, die Anwendung in einem Terminal auszuführen. Wenn Sie auf ein ausführbares Skript doppelklicken, werden Sie von Nautilus gefragt, ob Sie es in einem Terminal ausführen, ohne Terminal ausführen oder die Datei in einem Texteditor bearbeiten möchten.