“xterm xterm”명령이 왜 무한 재귀를 생성합니까?


31

우분투 14.04 (64 비트)를 실행 중입니다. 명령에 대해 처음 알게되었을 때 명령을 xterm시도하여 xterm xterm새로운 xterm 창을 무한 개방하기 시작했습니다.
ctrl + C즉시 중지하고 모든 창을 닫습니다.

그러나 나는 그것이 얼마나 멀리 가고 있는지보고 싶었습니다. 거의 모든 RAM을 먹었고 결국 닫혔습니다 (시스템 자체에서 생각합니다).

그래서 호기심 때문에 왜 이런 일이 발생합니까?


3
주 제외 : 메모리가 너무 많이 사용되어 OOM (메모리 부족) 킬러에 의해 종료되어 닫혔습니다.
Léo Lam

5
이것은 버전 301에 의해 수정되어야합니다 . " SHELL환경 변수를 발견 된 프로그램으로 만 설정하십시오 /etc/shells(Al Poole의 패치 / 보고서에 의해 프롬프트 됨)". (대답은 SHELL환경 변수 의 내용을 설명 합니다).
Cristian Ciupitu

@CristianCiupitu-+1-방금 308 버전을 설치했습니다. 반복 터미널을 여는 대신 빈 터미널을 열고 두 번째 터미널은 bash를 사용합니다 (두 번째는 아마도 첫 xterm의 '쉘'입니다)
Wilf

답변:


26

당신이주는 첫 번째 매개 변수가 있기 때문입니다 I (추측) xterm는 IS - 사용에 xterm bash(또는 xterm /bin/bash), xterm python

그래서 실행 xterm되고 xterm쉘로 시작하려고 시도합니다 . 쉘로 시작하여 다른 쉘로 시작합니다 xterm.

당신은 아마 이것을 실행하여 조금 더 찾을 수 있습니다 man xterm


24
예. 첫 번째 xterm세트 $SHELLxterm또 다른 시작 xterm껍질 등을. 다른 xterm용도의 명령 $SHELL그것의 쉘 따라서 또 다른 시작으로 xterm, ...
플로리안 Diesch

6
대답의이 부분은 명확하지 않습니다 : "다른 것부터 시작합니다 xterm". 왜 그런 일이 발생합니까? 해당 부분을 설명해 주신 @FlorianDiesch에게 감사드립니다.
John Kugelman은 Monica

@JohnKugelman-첫 번째 xtermxterm쉘로 두 번째를 xterm시작하고 , 두 번째 는 세 번째 xterm를 쉘로 시작하고, 세 번째는 네 번째를 쉘로 시작합니다 ... etc
Wilf

3
첫 번째 xterm가 두 번째를 시작하는 이유는 xterm다음과 같습니다 xterm xterm. 입력했기 때문 입니다. 그러나 왜 두 번째 xterm는 세 번째를 시작 xterm합니까? 을 (를) 입력하지 않았 xterm xterm xterm으므로 세 번째 xterm가 시작되는 이유는 분명하지 않습니다 . Florian의 의견은 이유를 설명합니다.
John Kugelman은

1
그래서 호기심으로도 가능합니다 gnome-terminal.
TuKsn

16

짧은 버전 : xterm의 인수는 xterm이 실행할 쉘입니다. 쉘은 환경 변수에 설정되므로 추가 호출은 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.