Почему команда «xterm xterm» создает бесконечную рекурсию?

Я использую Ubuntu 14.04 (64 бит). Когда я впервые узнал о команде xterm, я попробовал команду xterm xterm, и она начала бесконечно открывать новые окна xterm.
ctrl + C немедленно останавливает его и закрывает все окна.

Но я хотел посмотреть, как далеко он зайдет, и позволить ему бегать так долго, как может. Он израсходовал почти всю оперативную память и в конечном итоге был закрыт (я думаю, сама система).

Так, просто из любопытства, почему / как это происходит?

31
задан 22 July 2014 в 01:47

2 ответа

Я (предположение), которое это вызвано тем, что первый параметр Вы даете xterm, оболочка для использования - xterm bash (или xterm /bin/bash), xterm python и т.д.

, Таким образом, это выполняет xterm, пытается запуститься xterm как оболочка, которая запускает другой xterm как та оболочка, затем другой и другой...

можно, вероятно, найти немного больше на этом путем выполнения man xterm

26
ответ дан 22 July 2014 в 01:47

Короткая версия: аргументом xterm является оболочка для выполнения xterm; оболочка установлена в var среды, поэтому дальнейшие вызовы делают 10 PRINT "xterm" 20 GOTO 10 рекурсия.

версия Long:

  1. xterm xterm передачи xterm к вызову xterm как оболочка xterm переменной установки $SHELL к xterm (1-й параметр xterm интерпретируется как оболочка для выполнения)
  2. затем, xterm выполняемый Вашим xterm xterm команда выполняется $SHELL - в этом случае, уже создавая другой xterm экземпляр (потому что $SHELL=xterm теперь)
  3. $SHELL=xterm, таким образом, недавно созданный xterm выполняется xterm
  4. дополнительные материалы для чтения goto 3

: man xterm

16
ответ дан 22 July 2014 в 01:47

Другие вопросы по тегам:

Похожие вопросы: