为什么命令“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
递归。
长版:
-
xterm xterm
通过将$SHELL
变量设置$SHELL
xterm
将xterm作为xterm的shell传递给xterm(xterm的第一个参数被解释为要执行的shell) - 然后,你的
xterm xterm
命令执行的xterm xterm
执行$SHELL
– 在这种情况下,创建另一个xterm实例(因为现在$SHELL=xterm
) -
$SHELL=xterm
已经存在,所以新创建的xterm执行xterm
- 转到3
进一步阅读: man xterm