コマンド「xterm xterm」が無限再帰を作成するのはなぜですか?


31

Ubuntu 14.04(64ビット)を実行しています。コマンドを初めて知ったとき、コマンドxtermを試してみたところ、xterm xterm新しいxtermウィンドウが無限に開き始めました。
ctrl + Cすぐに停止し、すべてのウィンドウを閉じます。

しかし、私はそれがどこまで進んでいるかを確認し、できるだけ長く実行したいと考えました。ほとんどすべてのRAMを使い果たし、最終的には閉じられました(システム自体が考えています)。

好奇心から、なぜ/どのようにこれが起こるのですか?


3
トピック外:おそらくあまりにも多くのメモリを使用し、OOM(メモリ不足)キラーによって殺されたため、閉じられました。
レオラム14

5
これは、バージョン301で修正する必要があります:「Al Pooleによるパッチ/レポートで指示された」でSHELL見つかったプログラムにのみ環境変数を設定します/etc/shells。(答えは、SHELL環境変数の内容を説明しています)。
クリスティアンシウピトゥ14年

@CristianCiupitu - +1 - Iだけインストールされたバージョン308 - 、代わりに繰り返し端子を開く、それはブランク1、およびBashと二番目の(おそらく最初のxtermの「シェル」である第2を開く。
Wilf

回答:


26

I(推測)これはあなたに与える最初のパラメータがあるためでxtermあるシェルを使用する- xterm bash(またはxterm /bin/bash)、xterm pythonなど

だから、それは実行され、シェルとしてxterm起動しようとしxtermます。それは別のxtermものをそのシェルとして起動し、次に別のシェル、そして別の...

あなたはおそらくこれを実行することでもう少し見つけることができます man xterm


24
はい。最初のものxtermはシェルに別のものを設定$SHELLxtermて起動xtermします。そのほかxtermで使用するコマンド$SHELLので、別のを開始することのシェルとしてxterm、...
フロリアンDiesch

6
答えのこの部分は明確ではありません:「それはxtermシェルと同じように別のものを開始します」。なぜそれが起こるのですか?@FlorianDieschにその部分を説明してくれてありがとう。
ジョンクーゲルマンはモニカをサポートします14

@JohnKugelman -最初のxterm開始第二xtermのシェルとして、第二のxterm三分の一を開始しxterm、そのシェルとして第三の開始そのシェルとして第...など
Wilf

3
最初のものxtermが2番目のものを開始するxterm理由がわかります:それはあなたがタイプしxterm xtermたからです。しかし、なぜ2番目xtermが3 番目を開始するのxtermですか?を入力しなかったxterm xterm xtermため、3番目のxterm文字が始まる理由は明らかではありません。フロリアンのコメントはその理由を説明しています。
ジョンクーゲルマンはモニカをサポートします14

1
好奇心からだけでも可能gnome-terminalですか?
TuKsn 14年

16

短いバージョン:xtermの引数は、xtermによって実行されるシェルです。shellは環境変数に設定されているため、以降の呼び出しは10 PRINT "xterm" 20 GOTO 10再帰を実行します。

ロングバージョン:

  1. xterm xterm変数をxtermxtermのシェルとしてxterm呼び出しに渡します(xtermの最初のパラメーターは実行するシェルとして解釈されます)$SHELLxterm
  2. 次に、xterm xtermコマンドによって実行されるxterm が$SHELL-を実行します。この場合、別のxtermインスタンスを作成します($SHELL=xterm現在)
  3. $SHELL=xterm 既に、したがって、新しく作成されたxtermが実行されます xterm
  4. 後藤3

参考文献: man xterm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.