双击Fedora Linux中的可执行.sh文件后终端窗口关闭

时间:2012-12-04 18:55:05

标签: linux terminal fedora sh

我必须在Fedora Linux上处理一个项目,我必须经常输入以下内容:

player map1.cfg &

我发现我可以创建一个可执行的.sh文件,它包含这个:

#!/bin/bash
player *.cfg &

然而,当双击runmap.sh文件时,它会显示“Run in Terminal”,“Display”,“Cancel”和“Run”,当我点击“Run in Terminal”时,终端窗口会打开和关闭立即。如果我只是点击“运行”,那么.cfg会打开,但我需要终端窗口来运行其他(Java)文件。

如何解决此问题?

其他信息:

  • 我使用*.cfg因为我想将.sh文件复制并粘贴到其他包含.cfg文件的文件夹中,例如map2.cfg,map3.cfg等。

    < / LI>
  • 这是一个播放器/舞台项目。

2 个答案:

答案 0 :(得分:2)

从文件管理器运行脚本时,启动的shell不是交互式的。 shell只能读取脚本文件。

要打开除文件之外的交互式shell,您可以exec脚本末尾的新shell,并使用“在终端中运行”:

#!/bin/bash
player *.cfg &
exec /bin/bash

答案 1 :(得分:1)

好吧,让我们这样看待它。

在终端中运行命令时,该命令将作为子进程启动,然后发送到后台。一旦命令完成,它就会终止。在它在后台运行期间,您仍然可以发出命令,因为您的父进程本身就是终端窗口。

当您编写一个发出命令以在后台运行的脚本时,它会以该子命令生成该命令,然后因脚本已完成而关闭。

这些是操作系统的行为,而且确实不应该改变。基本上你要求的是它为你自己快速运行命令的方法,但仍然留下一个命令终端供你使用?

1)为什么输入命令这么麻烦?由于这个原因,Bash和其他终端具有历史功能。

2)为什么不在需要调用命令时调用从终端窗口编写的迷你脚本。如果您将脚本放在$ PATH变量的文件夹中,您可以在任何位置的终端中使用它。