2012-12-04 79 views
0

双击可执行sh文件关闭我要在Fedora Linux系统的一个项目工作,我必须键入以下经常:终端窗口后在Fedora Linux系统

player map1.cfg &

我想通了,我可以创建一个可执行的sh文件,它包含此:

#!/bin/bash 
player *.cfg & 

然而,当上了runmap.sh文件双击它显示我“在终端中运行”,“显示”,“取消”和“运行'当我点击'在终端中运行'时,终端窗口打开并关闭立即中断伊利。如果我点击“运行”,那么.cfg会打开,但我需要终端窗口来运行其他(Java)文件。

我该如何解决这个问题?

其他信息:

  • 我使用*.cfg因为我想复制并粘贴.SH文件到也包含.CFG文件,如map2.cfg,map3.cfg等

    其他文件夹
  • 这是一个球员/舞台项目。

回答

2

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

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

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

这工作完美。现在,Google已经搜索了很多小时的解决方案。谢谢! – iMaddin

1

那么让我们来看看这种方式。

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

当你编写一个脚本来发出一个在后台运行的命令时,它会启动,并将该命令作为孩子生成,然后关闭,因为脚本已经完成。

这些是操作系统的行为和真正不应该改变的东西。从本质上讲,你所要求的是让它自己快速运行命令的一种方式,但仍然留下一个命令终端供你使用?

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

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

+0

我真的必须键入'玩家MAP1 .cfg&许多次。我会猜测数百次!每当我打开这个cfg文件时,我都可以测试我的Java类是否按照它的设想进行测试,如果没有,那么我必须关闭.cfg打开的窗口,然后再次输入以再次用我的Java类进行测试。当我真的只想让事情运行很累人时,这是很多打字并且不得不重复输入。如果我只需要进行1次双击+ 1次点击,而不是每次输入17个不同的字符(这甚至不包括我的朦胧或忘记'&'),它可以节省大量时间。 – iMaddin

+0

你使用'bash'吗?为什么不直接按?其他终端(ksh)也有历史记录,您可以查阅。或者,就像我说的。运行一个终端,然后调用你的小脚本'testMapcfg.sh'。如果您修改$ PATH以包含脚本本身的位置,您可以从任何地方运行该脚本 – Grambot

+0

我知道我可以按'up',但由于之后我将运行Java文件,因此需要搜索命令并且可能会很痛苦选择错字的。有时候播放器出现问题,终端窗口不会让我输入任何新的命令。所以我必须关闭并重新打开。我不认为你理解我:)也许这有助于说我是Mac用户,并且我希望事情尽可能地方便用户^ ^! – iMaddin