Pourquoi la commande “xterm xterm” crée-t-elle une récursion infinie?

30

J'utilise Ubuntu 14.04 (64 bits). Lorsque j'ai découvert la commande xterm pour la première fois, j'ai essayé la commande xterm xterm et elle a commencé à ouvrir infiniment de nouvelles fenêtres xterm.
ctrl + C l'arrête immédiatement et ferme toutes les fenêtres.

Mais je voulais voir jusqu'où cela pouvait aller et le laisser courir aussi longtemps qu'il le pouvait. Il a consommé presque toute la mémoire vive et a finalement été fermé (je pense par le système lui-même).

Alors, par simple curiosité, pourquoi / comment cela se produit-il?

    
posée CluelessNoob 27.06.2014 - 15:29
la source

2 réponses

26

Je suppose que c'est parce que le premier paramètre que vous attribuez à xterm est le shell à utiliser - xterm bash (ou xterm /bin/bash ), xterm python etc.

Donc, il lance xterm , essaie de démarrer xterm en tant que shell, ce qui lance un autre xterm en tant que shell, puis un autre, et un autre ...

Vous pouvez probablement en savoir plus à ce sujet en exécutant man xterm

    
réponse donnée Wilf 27.06.2014 - 15:49
la source
15

Version courte: l'argument de xterm est le shell à exécuter par xterm; shell est défini dans environment var, donc les appels suivants font un 10 PRINT "xterm" 20 GOTO 10 récursivité.

Version longue:

  1. xterm xterm transmet xterm à xterm appelle en tant que shell xterm en définissant $SHELL variable sur xterm (le premier paramètre de xterm est interprété comme un shell à exécuter)
  2. alors, xterm exécuté par votre commande xterm xterm exécute le $SHELL - dans ce cas, en créant une autre instance xterm (car $SHELL=xterm maintenant)
  3. $SHELL=xterm déjà, le xterm nouvellement créé exécute xterm
  4. allez à 3

Lectures supplémentaires: man xterm

    
réponse donnée vaxquis 28.06.2014 - 14:39
la source

Lire d'autres questions sur les étiquettes