我想问一下通过普通终端窗口执行脚本/命令与单击终端应用程序的桌面快捷方式(请参阅末尾的桌面快捷方式)之间有什么区别。
肯定存在一些差异,因为当我在标准终端窗口中启动命令并在测试命令“sleep 100”期间尝试关闭时,会出现警告提示(“关闭此终端?仍有进程……”)。但是当通过桌面图标执行时,窗口会在没有任何警告的情况下关闭。
我之所以问这个问题,是因为我正在准备 rclone 的挂载脚本,该脚本将在单击桌面图标后按需执行,并且我想保持该窗口打开并且“安全”,以免意外单击关闭按钮。
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=SOME_NAME
Terminal=true
Type=Application
Exec=sleep 100
Icon=drive-removable-media
答案1
不同之处在于将命令作为终端进程的直接子进程Exec=sleep 100
运行:sleep
systemd───systemd───gnome-terminal-───sleep
而在标准终端窗口中输入时sleep 100
,会出现交互式外壳介于两者之间。通过将命令包装在交互式 shell 中(不需要像 bash 那样复杂的 shell),您可以在桌面应用程序中获得相同的行为:
Exec=sh -ic 'sleep 100'
这样进程树就变成
systemd───systemd───gnome-terminal-───sh───sleep