J'utilise Ubuntu 14.04 (64 bits). Quand j'ai découvert la commande xterm
pour la première fois, j'ai essayé la commande xterm xterm
et elle a commencé à ouvrir indéfiniment 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 mangé presque tout le RAM et a finalement été fermé (je pense par le système lui-même).
Alors simplement par curiosité, pourquoi/comment cela se produit-il?
J'imagine que c'est parce que le premier paramètre que vous donnez à xterm
est le Shell à utiliser - xterm bash
(ou xterm /bin/bash
), xterm python
etc.
Donc, il exécute xterm
, essaye de démarrer xterm
en tant que shell, ce qui démarre un autre xterm
en tant que celui-ci Shell, puis un autre, et un autre ...
Vous pouvez probablement en trouver un peu plus en exécutant man xterm
Version courte: l'argument de xterm est le shell à exécuter par xterm; Shell est défini dans environment var. Par conséquent, les appels suivants effectuent une récursivité 10 PRINT "xterm" 20 GOTO 10
.
Version longue:
xterm xterm
passe xterm
à l'appel xterm en tant que shell xterm en définissant la variable $Shell
avec xterm
(le premier paramètre de xterm est interprété comme un shell à exécuter)xterm xterm
exécute le $Shell
- dans ce cas, en créant une autre instance de xterm (car $Shell=xterm
maintenant).$Shell=xterm
déjà, donc le xterm nouvellement créé exécute xterm
Lectures supplémentaires: man xterm