사용할 수 있습니다 .exec ./your-script
그놈 터미널과 같은 터미널 에뮬레이터는 내부에서 실행되는 초기 프로세스 (일반적으로 쉘)가 종료되면 종료됩니다.
이미 터미널에 있고 터미널을 종료하기 전에 수행하려는 유일한 작업이 특정 스크립트 (또는 프로그램)를 실행하는 것이라면 더 이상 더 이상 실행되는 쉘이 더 이상 필요하지 않습니다. 따라서 쉘의 exec
내장 기능을 사용하여 쉘이 명령으로 작성된 프로세스로 교체 되도록 할 수 있습니다 .
- 스크립트의 경우 다른 쉘 프로세스입니다.- 없이 스크립트를 실행할 때 두 번째 쉘 프로세스가 작성되는 방식과 같습니다
exec
.
구문은 예를 들어 입니다.exec command
exec ./your-script
exec
: 예
예를 들어,이라고 불리는 count
실행 파일로 표시되고 현재 디렉토리에 쉘 스크립트가 있다고 가정하십시오 . 그것은 포함합니다 :
#!/usr/bin/env bash
for i in {5..1}; do echo $i; sleep 1; done
그리고 터미널에서 다음을 실행합니다.
exec ./count
이 번호가 인쇄 5
, 4
, 3
, 2
, 및 1
초당 한 후 단자 창 닫는다.
예를 들어, bash
다른 쉘 인스턴스를 시작하기 위해 처음 실행 한 경우와 같이 터미널에서 실행 된 첫 번째 프로세스가 아닌 다른 프로세스에서이를 실행 하면 터미널을 종료하지 않고 해당 프로세스 를 작성한 쉘로 돌아갑니다 . 이 경고는 exit
기반 방법에 동일하게 적용됩니다 .
사용할 수 있습니다 ../your-script; exit
셸을 통해 새 프로세스로 교체하도록하고 싶지 않다면 (쉘을 통해 exec
), 새 프로세스가 완료된 후 즉시 종료되도록 할 수 있습니다.
이렇게하려면 명령과 exit
명령을 구분하여 구분하여 ;
한 줄에 제공 할 수 있습니다.
구문은 command; exit
예를 들어 입니다../your-script; exit
command; exit
vs. command && exit
이것은 kos 와 heemayl의 대답 에서 제안 된 방법 과 비슷하게 보일 수 있습니다 . 차이점은 다음과 같습니다../your-script && exit
&&
첫 번째 명령 이 종료 코드 0을 리턴하여 성공했다고보고 한 경우에만 두 번째 명령을 실행합니다 .
;
첫 번째 명령이 성공을보고했는지 여부에 관계없이 두 번째 명령을 실행합니다.
원하는 상황은 특정 상황에 따라 다릅니다. 명령이 실패하면 호출 쉘 (및 호스팅 터미널)을 그대로 유지 하시겠습니까? 그렇다면 &&
; 그렇지 않은 경우을 사용하십시오 ;
.
또한 실패 가보고 된 command || exit
경우에만 호출 쉘을 종료합니다 .command