나는 터미널 에뮬레이터에 있습니다. 지정된 명령을 실행하기 위해 다른 터미널을 열고 싶습니다.
gnome-terminal -e "zsh -c 'pwd; zsh;'"
다른 터미널에서는 계속해서 성공적으로 실행됩니다 pwd
. 종료 zsh
후 pwd
zsh가 시작되고 두 번째 터미널 인스턴스에서 다른 명령을 실행할 수 있습니다.
그런데 다른 응용프로그램을 실행하면 pwd
장시간 실행되는 프로그램이 제대로 종료되지 않습니다 .
예를 들어 CtrlCnode.js 서버를 종료하기 위해 아래 명령을 입력하면 터미널도 닫힙니다. 옵션을 통해 SIGINT
첫 번째 옵션으로 전달되는 것 같습니다 .zsh
-c
gnome-terminal -e "zsh -c 'node server.js; zsh;'"
이 문제를 어떻게 해결할 수 있나요?
답변1
나는 이것을 bash에서 시도했다
그래도 안되면 미리 사과해주세요.
나는 userInput.sh라는 bash 스크립트를 작성했습니다. 스크립트는 사용자 입력을 기다리고 종료됩니다.
`
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
read -p "Press any key to continue... " -n1 -s
이제 실행하고 clt+c를 누르면
gnome-terminal -e "bash -c './userInput.sh; bash;'"
userInput.sh는 종료되지만 bash 프롬프트는 그대로 유지됩니다.
이제 귀하의 경우에는 사용자 입력을 기다리지 않고 다음과 같이 node server.js를 실행하고 있다고 생각합니다.
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
node server.js
스크립트 이름을 "runNodeJs.sh"라고 가정하면 명령은 다음과 같습니다.
gnome-terminal -e "bash -c './runNodeJs.sh; bash;'"