Ich verwende Ubuntu 14.04 (64 Bit). Als ich das erste Mal von dem Befehl erfahren habe xterm
, habe ich ihn ausprobiert xterm xterm
und es wurden unendlich viele neue xterm-Fenster geöffnet.
ctrl + C
stoppt es sofort und schließt alle Fenster.
Aber ich wollte sehen, wie weit es geht und es laufen lassen, so lange es geht. Es hat fast den gesamten Arbeitsspeicher aufgezehrt und wurde schließlich geschlossen (glaube ich, vom System selbst).
Also nur aus Neugier, warum / wie passiert das?
command-line
xterm
AhnungslosNein
quelle
quelle
SHELL
Umgebungsvariable nur auf Programme, die sich in befinden/etc/shells
(durch Patch / Report von Al Poole veranlasst)". (Die Antworten erklären, was mit derSHELL
Umgebungsvariablen passiert).Antworten:
Ich schätze, das liegt daran, dass der erste Parameter, den Sie angeben,
xterm
die zu verwendende Shell ist -xterm bash
(oderxterm /bin/bash
)xterm python
usw.Also läuft es
xterm
, versuchtxterm
als Shell zu starten , die eine anderexterm
als die eine Shell startet , dann noch eine und noch eine ...Sie können wahrscheinlich ein bisschen mehr dazu finden, indem Sie laufen
man xterm
quelle
xterm
setzt$SHELL
auf einxterm
anderes und startet esxterm
als seine Shell. Der anderexterm
benutzt den Befehl$SHELL
als Shell und startet damit einen anderenxterm
, ...xterm
als diese eine Muschel startet ". Warum passiert das? Vielen Dank an @FlorianDiesch für die Erklärung dieses Teils.xterm
startet den zweitenxterm
als seine Muschel, der zweitexterm
startet den drittenxterm
als seine Muschel, der dritte startet den vierten als seine Muschel ... etcxterm
das zweite beginntxterm
: Es liegt daran, dass Sie getippt habenxterm xterm
. Aber warum fängt der Zweitexterm
den Dritten anxterm
? Sie haben nicht getipptxterm xterm xterm
, weshalb der drittexterm
beginnt , ist nicht klar . Florians Kommentar erklärt warum.gnome-terminal
?Kurzversion: Das Argument von xterm ist die Shell, die von xterm ausgeführt werden soll. Die Shell ist in der Umgebungsvariable gesetzt, daher führen weitere Aufrufe eine
10 PRINT "xterm" 20 GOTO 10
Rekursion durch.Lange Version:
xterm xterm
Übergabexterm
an den xterm-Aufruf als xterm-Shell durch Setzen der$SHELL
Variablen aufxterm
(1. Parameter von xterm wird als auszuführende Shell interpretiert)xterm xterm
Befehl ausgeführt wird, den Befehl aus.$SHELL
In diesem Fall wird eine weitere xterm-Instanz erstellt (weil$SHELL=xterm
jetzt).$SHELL=xterm
bereits, so wird das neu erstellte xterm ausgeführtxterm
Weitere Lektüre:
man xterm
quelle