배경: Windows 컴퓨터에서 Putty를 통해 Linux 컴퓨터에 SSH로 연결합니다. 저는 Windows에서 VcXsrv를 실행하고 SSH를 통해 X를 전달하고 있습니다. 이 모든 것이 예상대로 작동합니다.
새 모니터에서 그놈 터미널을 여는 데 문제가 있습니다Bash 스크립트를 통해 명령을 실행할 때.
콘솔에서 직접 이 명령을 실행하면 새 터미널 서버가 시작되고 서버에 연결된 gnome 터미널 세션을 시작할 수 있습니다.
$ /usr/libexec/gnome-terminal-server --app-id my.foo &
[1] 29553
$ gnome-terminal --app-id my.foo
$
그러나 동일한 명령을 쉘 스크립트에 넣으면 다음 오류가 발생합니다.
startGnomeTerm.sh의 내용
#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
gnome-terminal --app-id my.foo
스크립트를 실행할 때
$ ./startGnomeTerm.sh
# Error creating terminal: The name my.foo was not provided by any .service files
나는 심지어 실행하여 스크립트와 모든 쉘 변수를 공유하려고 시도했습니다.
$ export > shell_vars
그런 다음 스크립트 시작 부분에 넣으십시오.
#!/bin/bash
source shell_vars
....
-고쳐 쓰다-
해결책은 명령 사이에 약간의 지연을 추가하는 것입니다. 서버 설정은 스크립트에서 허용하는 것보다 시간이 오래 걸리므로 서버가 실제로 실행되기 전에 터미널이 연결을 시도합니다.
작업 스크립트:
#!/bin/bash
/usr/libexec/gnome-terminal-server --app-id my.foo &
sleep 0.5
gnome-terminal --app-id my.foo
답변1
위에서 언급한 바와 같이, 터미널 서버 시작과 새 터미널 열기 사이에 절전 모드가 발생하는 타이밍 문제. :)