![无需“立即关闭”的终端/bash 脚本的快捷方式](https://linux22.com/image/1038285/%E6%97%A0%E9%9C%80%E2%80%9C%E7%AB%8B%E5%8D%B3%E5%85%B3%E9%97%AD%E2%80%9D%E7%9A%84%E7%BB%88%E7%AB%AF%2Fbash%20%E8%84%9A%E6%9C%AC%E7%9A%84%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F.png)
我在 中创建了一个桌面条目~/.local/share/applications
。它看起来类似于以下内容:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Crontona Server
GenericName=CA Server
Comment=BDAF server for Crontona
Exec=bash "/usr/local/crontona/run.sh"
Icon=/usr/local/crontona/app.ico
Terminal=true
Type=Application
它显示在 Unity 启动器和所有内容中,但每当我单击它时,终端都会弹出但立即关闭。我使用“bash ./.....run.sh”完全没有问题,但通过菜单却没有成功。知道为什么会发生这种情况吗?
这是 run.sh 文件的内容:
#!/bin/bash
./corona_run -prot tcp +maxcon 16
答案1
将该命令添加read x
为 run.sh 中的最后一行。此读取将导致命令窗口保持打开状态,直到您按回车键。如果显示任何消息,这将提供时间阅读它们。
这read
是关键。这是一个 shell 脚本(我更喜欢它而不是 bash,尽管 bash 正变得越来越流行)。顺便说一句,末尾的 .sh 表示 shell 脚本,而不是脚本。您可以将启动器 Exec 选项更改为:
Exec="/usr/local/crontona/run.sh"
并使用以下 run.sh 脚本...
#!/bin/sh
./corona_run -prot tcp +maxcon 16
echo -n Press enter to end...
read x
echo Ending Now\!
注意,我在结尾处省略了 !。除非您在终端内运行脚本并希望它回显执行,否则最后一行是不需要的。这样,如果终端出现并且脚本在终端内运行,则脚本将不会退出,直到您按下 Enter 键,因此终端在您准备好之前无法关闭。