Używam Ubuntu 14.04 (64-bitowy). Kiedy po raz pierwszy dowiedziałem się o poleceniu xterm
, wypróbowałem polecenie xterm xterm
i zaczęło się nieskończenie otwierać nowe okna xterm.
ctrl + C
zatrzymuje go natychmiast i zamyka wszystkie okna.
Ale chciałem zobaczyć, jak daleko się posuwa i pozwolić mu działać tak długo, jak to możliwe. Zjadł prawie całą pamięć RAM i ostatecznie został zamknięty (myślę, że przez sam system).
Więc z ciekawości, dlaczego / jak to się dzieje?
command-line
xterm
CluelessNoob
źródło
źródło
SHELL
zmienną środowiskową tylko na programy znalezione w/etc/shells
(monit przez łatkę / raport Al Poole)”. (Odpowiedzi wyjaśniają, co jest zeSHELL
zmienną środowiskową).Odpowiedzi:
Myślę, że to dlatego, że pierwszym parametrem, który podajesz,
xterm
jest powłoka do użycia -xterm bash
(lubxterm /bin/bash
)xterm python
itp.Działa więc
xterm
, próbuje zacząćxterm
jako powłoka, która zaczyna sięxterm
jako powłoka, potem kolejna i kolejna ...Prawdopodobnie możesz znaleźć więcej informacji na ten temat, uruchamiając
man xterm
źródło
xterm
zestawy$SHELL
doxterm
i rozpoczyna kolejnyxterm
jako jego powłoki. Ten drugixterm
używa polecenia,$SHELL
ponieważ jest to powłoka, a tym samym uruchamianie kolejnegoxterm
, ...xterm
jak ta powłoka”. Dlaczego tak się dzieje? Dzięki @FlorianDiesch za wyjaśnienie tej części.xterm
zaczyna drugixterm
jako skorupa, drugixterm
zaczyna trzecixterm
jako skorupa, trzeci zaczyna czwarty jako powłoka ... itd.xterm
zaczyna się drugixterm
: to dlatego, że piszeszxterm xterm
. Ale dlaczego drugixterm
zaczyna trzecixterm
? Nie wpisałeśxterm xterm xterm
, więc nie jest oczywiste, dlaczegoxterm
zaczyna się trzecia . Komentarz Floriana wyjaśnia dlaczego.gnome-terminal
?Krótka wersja: argument xterm jest powłoką do wykonania przez xterm; shell jest ustawiony w var var, więc kolejne wywołania wykonują
10 PRINT "xterm" 20 GOTO 10
rekurencję.Długa wersja:
xterm xterm
przechodzixterm
do wywołania xterm jako powłoka xterm poprzez ustawienie$SHELL
zmiennej naxterm
(pierwszy parametr xterm jest interpretowany jako powłoka do wykonania)xterm xterm
polecenie wykonuje$SHELL
- w tym przypadku, tworząc kolejną instancję xterm (ponieważ$SHELL=xterm
teraz)$SHELL=xterm
już, więc nowo utworzony xterm wykonuje sięxterm
Dalsza lektura:
man xterm
źródło