Bash

通過 ssh 遠端登錄時無法從 shell 腳本啟動新的 gnome 終端

  • February 20, 2019

背景:我通過 Windows 機器上的 Putty SSH 進入我的 Linux 機器。我在 Windows 上執行 VcXsrv 並通過 SSH 轉發 X。這一切都按預期工作。

通過 bash 腳本執行命令時,我在新顯示器上打開 gnome-terminal 時遇到問題。

當我直接在控制台上執行這些命令時,新的終端伺服器會啟動,並且我能夠啟動連接到伺服器的 gnome 終端會話。

$ /usr/libexec/gnome-terminal-server --app-id my.foo &
[1] 29553
$ gnome-terminal --app-id my.foo
$

但是,當我將相同的命令放入 shell 腳本時,會出現以下錯誤:

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

我什至嘗試通過執行與腳本共享所有 shell 變數

$ 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

如上所述:時間問題;在終端伺服器啟動和打開新終端之間引入睡眠。:)

引用自:https://unix.stackexchange.com/questions/501941