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



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

player map1.cfg &

我发现我可以创建一个可执行的.sh文件,其中包含以下内容:

#!/bin/bash
player *.cfg &

但是,当双击runmap.sh文件时,它会显示"在终端中运行"、"显示"、"取消"one_answers"运行",当我单击"在终端运行"时,终端窗口会立即打开和关闭。如果我只是点击"Run",则.cfg会打开,但我需要终端窗口来运行其他(Java)文件。

如何解决此问题?

其他信息:

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

  • 这是一个球员/舞台项目。

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

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

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

好吧,让我们这样看吧。

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

当您编写的脚本发出要在后台运行的命令时,它会启动,将该命令作为其子命令生成,然后由于脚本已完成而关闭。

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

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

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

最新更新