Bash
通過 ssh 遠端登錄時無法從 shell 腳本啟動新的 gnome 終端
背景:我通過 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
如上所述:時間問題;在終端伺服器啟動和打開新終端之間引入睡眠。:)