xterm没有运行shell脚本

时间:2015-11-22 12:55:26

标签: linux bash shell xterm

所以我试图使用这个命令:

export DISPLAY=:1; /usr/bin/xterm -hold -e /path/to/shscript

shscript的位置:

#!/bin/bash
echo "Restarting ...     $(date)" >> /var/log/mw2.txt
if screen -ls | grep -q 'test'; then
    screen -X -S test quit
    sleep 1000
    screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd"
else
    screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd"
fi

所以我想启动一个新的xterm窗口并运行一个shell脚本。 但是无论我尝试使用什么shell脚本,它都不会运行它。它只是空白。所有其他命令都可以工作,但是当我在其中放入一个shell脚本时,它只是空白而什么都不做。我无法找到解决方案,请帮助,谢谢。

我通过set -x得到了这个:

++ date
+ echo 'Restarting ... (date)'
+ grep -q test
+ screen -ls
+ screen -d -m -S test -wine iw4m etc...

1 个答案:

答案 0 :(得分:0)

我认为你得到了你所要求的......

从屏幕的手册页:

   -d -m   Start screen in "detached" mode. This creates a new session but
           doesn't  attach  to  it.  This  is  useful  for  system startup
           scripts.

另一方面,你使用-hold for xterm:

   -hold   Turn  on  the  hold  resource, i.e., xterm will not immediately
           destroy its window when the shell command completes.   It  will
           wait  until you use the window manager to destroy/kill the win‐
           dow, or if you use the menu entries that send a  signal,  e.g.,
           HUP or KILL.

这正是你所看到的。 xterm启动,执行运行的屏幕,但是您没有看到输出,因为屏幕没有连接到虚拟终端。由于屏幕已分离,因此shell脚本会退出,xterm会保留窗口供您在闲暇时将其销毁。

我敢打赌,如果在另一个xterm中你附加到screen -S test的会话,你会看到输出。