在终端中运行脚本 vs 通过桌面快捷方式运行脚本

在终端中运行脚本 vs 通过桌面快捷方式运行脚本

我想问一下通过普通终端窗口执行脚本/命令与单击终端应用程序的桌面快捷方式(请参阅末尾的桌面快捷方式)之间有什么区别。

肯定存在一些差异,因为当我在标准终端窗口中启动命令并在测试命令“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

相关内容