双击FedoraLinux中的executable.sh文件后,终端窗口关闭

双击FedoraLinux中的executable.sh文件后,终端窗口关闭,linux,terminal,fedora,sh,Linux,Terminal,Fedora,Sh,我必须在Fedora Linux上进行一个项目,我必须经常键入以下内容: player map1.cfg& 我发现我可以创建一个可执行的.sh文件,它包含以下内容: #!/bin/bash player *.cfg & 但是,当双击runmap.sh文件时,它会显示“在终端中运行”、“显示”、“取消”和“运行”,当我单击“在终端中运行”时,终端窗口会立即打开和关闭。如果我只是点击“Run”,那么.cfg就会打开,但我需要终端窗口来运行其他(Java)文件 我如何解决这个问题 其他资料:

我必须在Fedora Linux上进行一个项目,我必须经常键入以下内容:

player map1.cfg&

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

#!/bin/bash
player *.cfg &
但是,当双击runmap.sh文件时,它会显示“在终端中运行”、“显示”、“取消”和“运行”,当我单击“在终端中运行”时,终端窗口会立即打开和关闭。如果我只是点击“Run”,那么.cfg就会打开,但我需要终端窗口来运行其他(Java)文件

我如何解决这个问题

其他资料:

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

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


    • 好吧,让我们这样看

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

      当您编写发出命令以在后台运行的脚本时,该脚本将启动,将该命令作为子脚本生成,然后关闭,因为脚本已完成

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

      1) 为什么键入命令如此麻烦?正是出于这个原因,Bash和其他终端有一个历史函数


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

      好吧,让我们这样看它

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

      当您编写发出命令以在后台运行的脚本时,该脚本将启动,将该命令作为子脚本生成,然后关闭,因为脚本已完成

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

      1) 为什么键入命令如此麻烦?正是出于这个原因,Bash和其他终端有一个历史函数


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

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

      要打开文件之外的交互式shell,您可以
      exec
      脚本末尾的新shell,并使用“Run-in Terminal”:


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

      要打开文件之外的交互式shell,您可以
      exec
      脚本末尾的新shell,并使用“Run-in Terminal”:


      这很有效。已经在谷歌上搜索解决方案好几个小时了。非常感谢。这很有效。已经在谷歌上搜索解决方案好几个小时了。非常感谢。我真的必须多次键入
      player map1.cfg&
      。我猜了好几百次!每次打开这个cfg文件时,我都可以测试我的Java类是否做了它应该做的事情,如果做不到,那么我必须关闭.cfg打开的窗口并再次键入它,以再次使用我的Java类测试它。这需要大量的输入,而且当我真的只想让事情运行时,必须反复输入这些内容是很累人的。如果我只需要双击一次,而不是每次键入17个不同的字符(这甚至不包括我输入错误或忘记了“&”),那么就可以节省很多时间。您使用的是
      bash
      ?为什么不干脆按一下?其他终端(ksh)也有历史记录,您可以查看。或者,就像我说的。运行一个终端,然后调用您的小脚本
      testMapcfg.sh
      。如果你修改$PATH以包含脚本的位置,你可以在任何地方运行它。我知道我可以按'up',但是因为我会在以后运行Java文件,所以必须搜索命令并可能选择键入错误的命令是一件痛苦的事。有时播放器出现问题,终端窗口不允许我输入任何新命令。所以我必须关闭并重新打开。我认为你不理解我:)也许说我是Mac用户,我希望事情尽可能友好一些会有帮助^。^!我想他明白了。你应该仔细研究一下细节。如果出现问题,Control+C会杀死你的玩家。实际上,您甚至不应该在bash中注意到这一点,因为您正在使用“&”。没有必要重新开放航站楼。然后,您可以研究类似Yakuake的项目(对于KDE,Gnome也有类似的东西)。有一些终端,你只需点击F10就可以隐藏和显示,这太棒了。我真的需要多次输入
      player map1.cfg&
      。我猜了好几百次!每次打开这个cfg文件时,我都可以测试我的Java类是否做了它应该做的事情,如果没有,那么我必须关闭.cfg打开的窗口,然后再次键入它,用我的Java cla测试它
      #!/bin/bash
      player *.cfg &
      exec /bin/bash