Neden “xterm xterm” komutu sonsuz bir özyinelemeye neden oluyor?


31

Ubuntu 14.04 (64 bit) kullanıyorum. Komutu ilk kez öğrendiğimde, komutu xtermdenedim xterm xtermve sonsuz yeni xterm pencereleri açmaya başladı.
ctrl + Chemen durdurur ve tüm pencereleri kapatır.

Ama ne kadar ileri gittiğini görmek ve olabildiğince uzağa çalışmasına izin vermek istedim. Neredeyse tüm RAM'leri yedi ve sonunda kapandı (sistemin kendisi tarafından düşünüyorum).

Öyleyse meraktan sadece, bu neden / nasıl oluyor?


3
Konu dışı: kapatıldı çünkü muhtemelen çok fazla bellek kullanmıştır ve OOM (bellek dışı) katili tarafından öldürülmüştür.
Léo Lam,

5
Bu, 301 sürümüyle düzeltilmelidir : " SHELLortam değişkenini yalnızca bulunan programlara ayarlayın /etc/shells(yama / rapor Al Poole tarafından istenir)". (Cevaplar SHELLçevre değişkeninde neyin olduğunu açıklar ).
Cristian Ciupitu

@CristianCiupitu - +1 - 308 versiyonunu yeni kurdum - ve tekrarlayan terminalleri açmak yerine, boş olanı ve ikincisini bash ile açar (ikincisi muhtemelen ilk xterm'in 'kabuğu' olur)
Wilf

Yanıtlar:


26

Eğer vermek Birinci parametre bunun nedeni ben (tahmin) xtermolduğunu kabuk - kullanılmasına xterm bash(veya xterm /bin/bash), xterm pythonvb

Böylece koşuyor xterm, xtermbir kabuk olarak başlamaya çalışıyor , bir başkası bir kabuk xtermolarak başlıyor , sonra bir başkası ...

Muhtemelen çalıştırarak bu konuda biraz daha bulabilirsiniz man xterm


24
Evet. İlk xtermset $SHELLiçin xtermve başka başlar xtermkabuğundan olarak. Diğerleri xtermkomutu $SHELLkabuklu olarak kullanır, böylece başka başlar xterm, ...
Florian Diesch

6
Cevabın bu kısmı açık değil: "bir başkası xtermkabuk olarak başlar ". Bu neden oluyor? @FlorianDiesch'e bu bölümü açıkladığınız için teşekkür ederiz.
John Kugelman,

@JohnKugelman - ilki kabuğu olarak xtermikinci başlar, ikincisi xtermkabuğu olarak xtermüçüncü başlar, üçüncüsü xtermkabuğu dördüncü başlar ... vb
Wilf

3
İlkini neden xtermikinci başlattığını xtermanlıyorum: çünkü sen yazdın xterm xterm. Peki neden ikincisi xtermüçüncü başlıyor xterm? Sen yazmadın xterm xterm xterm, bu yüzden üçüncü neden xtermbaşladığı belli değil . Florian'ın yorumu nedenini açıklıyor.
John Kugelman

1
Yani sadece meraktan da mümkündür gnome-terminal?
TuKsn

16

Kısa versiyon: xterm'in argümanı, xterm tarafından çalıştırılacak kabuktur; Kabuk ortamda var ayarlanır, bu nedenle başka çağrılar bir 10 PRINT "xterm" 20 GOTO 10özyineleme yapmak .

Uzun versiyon:

  1. xterm xtermxtermxterm çağrısına $SHELLdeğişkenini ayarlayarak xterm'in kabuğu olarak geçer xterm(xterm'in 1. parametresi çalıştırılacak kabuk olarak yorumlanır)
  2. Daha sonra, xterm xtermkomutunuz tarafından yürütülen xterm , $SHELL- bu durumda başka bir xterm örneği oluşturarak yürütür (çünkü $SHELL=xtermşimdi)
  3. $SHELL=xterm zaten, yani yeni oluşturulan xterm çalıştırır xterm
  4. 3'e git

Daha fazla okuma: man xterm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.