programing

스크립트 실행 후 그놈 터미널 닫기를 피합니까?

nasanasas 2020. 12. 8. 08:16
반응형

스크립트 실행 후 그놈 터미널 닫기를 피합니까?


여러 그놈 터미널을 열고 ssh를 통해 교실 컴퓨터에 연결하고 스크립트를 실행하는 bash 스크립트를 만들었습니다.

스크립트가 완료된 후 그놈 터미널이 닫히지 않도록하려면 어떻게해야합니까? 또한 터미널에 추가 명령을 입력 할 수 있기를 원합니다.

다음은 내 코드의 예입니다.

gnome-terminal -e "ssh root@<ip> cd /tmp && ls"

gnome-terminal이 열리기를 원한다는 것을 이해하고 몇 가지 명령을 실행 한 다음 프롬프트로 내려가 더 많은 명령을 입력 할 수 있습니다. Gnome-terminal은이 사용 사례를 위해 설계되지 않았지만 해결 방법이 있습니다.

gnome-terminal에서 bash를 실행하고 bash에게 명령을 실행 한 다음 bash를 실행하도록 지시하십시오.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

exec bash때문에 말은 필요 bash -c명령이 완료되면 종료됩니다. exec실행중인 프로세스가 새 프로세스로 대체됩니다. 그렇지 않으면 두 개의 bash 프로세스가 실행됩니다.

gnome-terminal이 rcfile명령을 실행 하는 준비된 상태로 bash 를 실행하게하십시오.

준비 somercfile:

source ~/.bashrc
echo foo
echo bar

그런 다음 다음을 실행하십시오.

$ gnome-terminal -e "bash --rcfile somercfile"

gnome-terminal이 명령을 실행하는 스크립트를 실행 한 다음 bash에 드롭하게하십시오.

준비 scripttobash:

#!/bin/sh
echo foo
echo bar
exec bash

이 파일을 실행 파일로 설정하십시오.

그런 다음 다음을 실행하십시오.

$ gnome-terminal -e "./scripttobash"

또는 다음을 만들 수 있습니다 genericscripttobash.

#!/bin/sh
for command in "$@"; do
  $command
done
exec bash

그런 다음 다음을 실행하십시오.

$ gnome-terminal -e "./genericscripttobash \"echo foo\" \"echo bar\""

모든 방법에는 단점이 있습니다. 선택해야하지만 현명하게 선택해야합니다. 나는 그 장황함과 직설성에 대한 첫 번째 솔루션을 좋아합니다.

즉, 이것은 당신에게 유용 할 것입니다 : http://www.linux.com/archive/feature/151340


마지막으로 이것은 나를 위해 작동합니다.

gnome-terminal --working-directory=WORK_DIR -x bash -c "COMMAND; bash"

  • 스택 오버플로 답변 : 터미널 내부에서 실행 된 명령이 완료되면 터미널이 닫히므로 즉시 종료되지 않는 명령을 작성해야합니다. 예를 들어, 터미널 창을 누를 때까지 열어 두려면 Enter:

    gnome-terminal -e "ssh host 'cd /tmp && ls'; read line"
    
  • 수퍼 유저 답변 : "제목 및 명령 / 명령 종료시"기본 설정이 "터미널 열기 유지"로 설정된 프로필을 만듭니다. --window-with-profile또는 --tab-with-profile옵션으로 gnome-terminal을 호출 하여 터미널 이름을 지정하십시오.


-ic대신 실행 -i하여 터미널 GUI를 닫을 때 터미널 닫기 bash 프로세스를 만듭니다.

gnome-terminal -e "bash -ic \"echo foo; echo bar; exec bash\""

이상적인 솔루션은 " Press any key " 에코를 사용하여 사용자 입력을 요청하는 것 입니다.

그러나 Nautis 또는 Nemo를 두 번 클릭하고 터미널에서 실행을 선택하면 작동하지 않는 것 같습니다.

In case of Ubuntu a shell designed for fast start-up and execution with only standard features is used, named dash I believe. Because of this the shebang is the very first line to start with to enable proper use of bash features. Normally this would be: #!/bin/bash or similar. In Ubuntu I learned this should be: #!/usr/bin/env bash.

Many workarounds exist to keep hold of the screen before the interpreter sees a syntax error in a bash command.

The solution in Ubuntu that worked for me:

#!/usr/bin/env bash

your code

echo Press a key...
read -n1

If running a bash script just add gedit afile to the end of the script and that will hold gnome-terminal open. "afile" could be a build log which it was in my case.

Did not try just using gedit alone but, that would properly work too.


Use nohup command.

nohup gnome-terminal -e "ssh root@ cd /tmp && ls"

Hope this will help you.

참고URL : https://stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution

반응형