webentwicklung-frage-antwort-db.com.de

Warum erzeugt der Befehl "xterm xterm" eine unendliche Rekursion?

Ich verwende Ubuntu 14.04 (64 Bit). Als ich das erste Mal von dem Befehl xterm erfahren habe, habe ich den Befehl xterm xterm ausprobiert und es hat begonnen, unendlich viele neue xterm-Fenster zu öffnen.
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 RAM gefressen und wurde schließlich geschlossen (glaube ich, vom System selbst).

Also nur aus Neugier, warum/wie passiert das?

31
CluelessNoob

Ich schätze, das liegt daran, dass der erste Parameter, den Sie xterm geben, Shell ist, um - _xterm bash_ (oder _xterm /bin/bash_), _xterm python_ zu verwenden. usw.

Also läuft es xterm, versucht xterm als Shell zu starten, was ein anderes xterm als diese eine Shell startet, dann ein anderes und ein anderes ...

Sie können wahrscheinlich ein bisschen mehr dazu finden, indem Sie man xterm ausführen

26
Wilf

Kurzversion: Das Argument von xterm ist die Shell, die von xterm ausgeführt werden soll. Die Shell ist in der Umgebungsvariable festgelegt, daher führen weitere Aufrufe eine _10 PRINT "xterm" 20 GOTO 10_ -Rekursion durch.

Lange Version:

  1. _xterm xterm_ übergibt xterm an den xterm-Aufruf als xterm-Shell, indem die Variable _$Shell_ auf xterm gesetzt wird (der erste Parameter von xterm wird als Shell interpretiert, die ausgeführt werden soll)
  2. anschließend führt der von Ihrem Befehl _xterm xterm_ ausgeführte xterm den Befehl _$Shell_ aus. In diesem Fall wird eine weitere xterm-Instanz erstellt (weil _$Shell=xterm_ jetzt).
  3. _$Shell=xterm_ bereits, so dass das neu erstellte xterm xterm ausführt
  4. gehe zu 3

Weitere Lektüre: man xterm

16
vaxquis