Por que o comando “xterm xterm” cria uma recursão infinita?

30

Estou executando o Ubuntu 14.04 (64 bits). Quando descobri o comando xterm , tentei o comando xterm xterm e ele começou a abrir infinitamente novas janelas do xterm.
ctrl + C pára imediatamente e fecha todas as janelas.

Mas eu queria ver até onde isso ia e deixá-lo rodar o maior tempo possível. Ele consumiu quase toda a RAM e acabou sendo fechado (acho que pelo próprio sistema).

Então, apenas por curiosidade, por que / como isso acontece?

    
por CluelessNoob 27.06.2014 / 15:29

2 respostas

26

Eu acho que isso é porque o primeiro parâmetro que você dá para xterm é o shell que deve ser usado - xterm bash (ou xterm /bin/bash ), xterm python etc.

Portanto, ele executa xterm , tenta iniciar xterm como um shell, que inicia outro xterm como o shell, depois outro e outro ...

Provavelmente, você pode encontrar um pouco mais sobre isso executando man xterm

    
por Wilf 27.06.2014 / 15:49
15

Versão resumida: o argumento do xterm é o shell a executar pelo xterm; shell é definido no ambiente var, portanto, outras chamadas fazem uma 10 PRINT "xterm" 20 GOTO 10 recursão.

Versão longa:

  1. xterm xterm passa xterm para xterm chamar como shell do xterm configurando $SHELL variable para xterm (o primeiro parâmetro do xterm é interpretado como shell a ser executado)
  2. então, o xterm executado pelo seu comando xterm xterm executa o $SHELL - nesse caso, criando outra instância do xterm (porque $SHELL=xterm now)
  3. $SHELL=xterm já, então o xterm recém-criado executa xterm
  4. goto 3

Outras leituras: man xterm

    
por vaxquis 28.06.2014 / 14:39