마우스 패드 GUI를 여는 쉘 스크립트에서 동시 단계 실행을 중지할 수 없습니다. Windows

마우스 패드 GUI를 여는 쉘 스크립트에서 동시 단계 실행을 중지할 수 없습니다. Windows
#!/bin/sh
...several lines of commands...
mousepad file.txt
zenity --info
...several more lines of commands...
exit

예상되는 동작:나는 스크립트에 명령을 내립니다(이 경우에는 키보드 단축키를 통해). ㅏ마우스 패드그러면 내 창이 열립니다.Xfce4데스크탑, 디스플레이 컨텐츠파일.txt. 텍스트 조작을 수행한 다음 수동으로 닫습니다.마우스 패드창문.다음, 주문했다제니티예상대로 창이 나타납니다. 수동으로 닫은 다음 스크립트의 다음 단계를 실행합니다.

열려 있는 다른 스크립트가 없으면 이 스크립트는 제대로 작동합니다.마우스 패드어디서나 Windows. 하지만 만약 내가 만약에이미 가지고 있다하나 이상마우스 패드해당 스크립트에 명령을 내리면 창이 열립니다(다시 키보드 단축키를 통해).지금 무슨 일이 일어나고 있는지는 다음과 같습니다.

이 명령에 설명된 대로 스크립팅한 후 예상되는 결과는 다음과 같습니다.마우스 패드창(내용을 표시하는 창)파일.txt)열려 있는,와 함께이것제니티창(이 경우에는제니티창문이 열린다앞으로이것마우스 패드창은 내가 수동으로 닫았습니다.) 이는 환영받지 못하는 행동입니다.

실행 시 테마 스크립트가 제대로 작동합니다.데비안 위즈(사용시스템 V). 그러나 최근 업그레이드 이후데비안 제시(사용체계) 나는 변화하고 환영받지 못하는 행동을 보기 시작했습니다. 내가 말했는지는 모르겠지만체계이것을 플레이해 보세요...

나는 wait명령과 줄 mousepad뒤에 추가하는 것을 포함하여 많은 것을 시도했습니다 &&. 또한 트래핑도 시도했습니다. 나에게는 아무것도 효과가 없습니다.

이런 일이 발생하는 원인은 무엇이며 어떻게 해결합니까?

티아!

답변1

설명하는 내용은 프로그램이 일종의 서버를 실행하여 새 인스턴스가 기존 인스턴스에 연결될 때 발생하는 현상입니다. 이미 실행 중인 경우 mousapad기존 인스턴스에 연결하고 즉시 종료됩니다. 즉시 종료되므로 스크립트가 계속 진행되므로 이를 볼 수 있습니다 zenity.

수정은 간단합니다. 이 기능을 비활성화하는 옵션이 있습니다.

$ mousepad -h
Usage:
  mousepad [OPTION…] [FILES...]

Help Options:
  -h, --help               Show help options
  --help-all               Show all help options
  --help-gtk               Show GTK+ Options

Application Options:
  --disable-server         Do not register with the D-BUS session message bus
  -q, --quit               Quit a running Mousepad instance
  -v, --version            Print version information and exit
  --display=DISPLAY        X display to use

이 옵션은 --disable-server단순히 스크립트를 다음과 같이 변경합니다.

#!/bin/sh
...several lines of commands...
mousepad --disable-server file.txt
zenity --info
...several more lines of commands...
exit

관련 정보