J'utilise Ubuntu 14.04 (64 bits). Lorsque j'ai découvert la commande pour la première fois xterm
, j'ai essayé la commande xterm xterm
et elle a commencé à ouvrir à l'infini 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 allait et le laisser fonctionner aussi longtemps que possible. Il a consommé presque toute la RAM et a finalement été fermé (je pense par le système lui-même).
Alors juste par curiosité, pourquoi / comment cela se produit-il?
command-line
xterm
CluelessNoob
la source
la source
SHELL
la variable d'environnement que pour les programmes trouvés dans/etc/shells
(invité par le patch / rapport par Al Poole)". (Les réponses expliquent ce qu'est laSHELL
variable d'environnement).Réponses:
Je suppose que c'est parce que le premier paramètre auquel vous donnez
xterm
est le shell à utiliser -xterm bash
(ouxterm /bin/bash
),xterm python
etc.Il s'exécute donc
xterm
, essaie de démarrer enxterm
tant que shell, qui en démarre un autre enxterm
tant que shell, puis un autre, et un autre ...Vous pouvez probablement trouver un peu plus à ce sujet en exécutant
man xterm
la source
xterm
jeux$SHELL
àxterm
et commence une autrexterm
que sa coquille. Cet autrexterm
utilise la commande$SHELL
car il est shell, en commençant ainsi un autrexterm
, ...xterm
comme celle-là". Pourquoi cela se produit-il? Merci @FlorianDiesch d'avoir expliqué cette partie.xterm
commence le secondxterm
comme coquille, le secondxterm
commence le troisièmexterm
comme coquille, le troisième commence le quatrième comme coquille ... etcxterm
commence le secondxterm
: c'est parce que vous avez tapéxterm xterm
. Mais pourquoi le deuxièmexterm
commence-t-il le troisièmexterm
? Vous n'avez pas tapéxterm xterm xterm
, donc ce n'est pas évident pourquoi le troisièmexterm
commence. Le commentaire de Florian explique pourquoi.gnome-terminal
?Version courte: l'argument de xterm est le shell à exécuter par xterm; shell est défini dans l'environnement var, donc les appels suivants font une
10 PRINT "xterm" 20 GOTO 10
récursivité.Version longue:
xterm xterm
passexterm
à l'appel xterm en tant que shell de xterm en définissant la$SHELL
variable surxterm
(le 1er paramètre de xterm est interprété comme shell à exécuter)xterm xterm
commande exécute le$SHELL
- dans ce cas, créant une autre instance xterm (car$SHELL=xterm
maintenant)$SHELL=xterm
déjà, donc le xterm nouvellement créé s'exécutexterm
Lectures complémentaires:
man xterm
la source