为什么命令“xterm xterm”会创建无限递归?

我正在运行Ubuntu 14.04(64位)。 当我第一次发现命令xterm ,我尝试了命令xterm xterm ,它开始无限地打开新的xterm窗口。
ctrl + C立即停止并关闭所有窗口。

但我想知道它走了多远,让它尽可能长时间运行。 它吃掉了几乎所有的RAM并最终关闭了(我认为是系统本身)。

所以出于好奇,为什么/这是怎么发生的?

我(猜)这是因为你给xterm的第一个参数是要使用的shell – xterm bash (或xterm /bin/bash ), xterm python等。

因此它运行xterm ,尝试启动xterm作为shell,启动另一个xterm就像那个shell,然后另一个,另一个…

你可以通过运行man xterm找到更多相关信息

简短版本:xterm的参数是由xterm执行的shell; shell在环境var中设置,因此进一步调用10 PRINT "xterm" 20 GOTO 10递归。

长版:

  1. xterm xterm通过将$SHELL变量设置$SHELL xterm将xterm作为xterm的shell传递给xterm(xterm的第一个参数被解释为要执行的shell)
  2. 然后,你的xterm xterm命令执行的xterm xterm执行$SHELL – 在这种情况下,创建另一个xterm实例(因为现在$SHELL=xterm
  3. $SHELL=xterm已经存在,所以新创建的xterm执行xterm
  4. 转到3

进一步阅读: man xterm