我必须在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变量的文件夹中,它将在终端的任何位置提供给您。