创建一个在终端中打开并执行命令的 .desktop 文件

创建一个在终端中打开并执行命令的 .desktop 文件

我想知道如何编写Exec.desktop 文件的命令来打开新终端并在其中执行 shell 脚本。该 shell 脚本可以运行,并且所有用户都可以访问。从终端启动脚本时一切正常,但尝试从 .desktop 文件启动脚本时则不行。

以下是我已经尝试过的一些组合:

Exec=gnome-terminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=echo hello

.desktop 终端选项设置为 true。

答案1

您的桌面文件的内容应如下所示(参见如何使用文本编辑器创建 .desktop 文件):

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "bash -c 'echo hello;$SHELL'"
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Application;

或者:

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=bash -c 'echo hello;$SHELL'
Icon=utilities-terminal
Terminal=true 
Type=Application
Categories=Application;

在第一种情况下,Terminal字段设置为false(可能与您的预期相反),在第二种情况下设置为true,但两种情况下的结果相同。

答案2

总结

[Desktop Entry]
Version=1.0
Name=Hello
Exec=sh -c 'echo hello; $SHELL'
Icon=utilities-terminal
Terminal=true
Type=Application

正如所述桌面入口规范Terminal=true告诉启动器在终端窗口中启动您的脚本。所选的终端仿真器取决于您的默认应用程序设置和桌面环境。在 GNOME 中,它是 gnome-terminal,在 KDE 中,它是 Konsole。(没有 DE,在普通的 WM 中,xdg-open 中有一个错误,只是Terminal=true忽略了,查看问题

您需要此行来运行您的脚本并在其后启动 shell。

Exec=sh -c 'echo hello; $SHELL'
  1. sh -c 'COMMAND'运行在 $PATH 中找到的执行 COMMAND 的“sh”二进制文件(在许多系统上,sh是符号链接 bash,但出于可移植性考虑,“sh”是首选)
  2. echo hello; $SHELL做两件事。首先,它会运行echo hello ,然后在执行此命令后启动 $SHELL。

如果你愿意不是添加一些等待你退出的命令,终端仿真器将只运行你的程序并出口


PS 如果你只是不想关闭你的终端,你可以这样做

Exec=sh -c 'echo hello; read'

或者

Exec=sh -c 'echo hello; sleep 5'

(read 将等待您按下 Enter 键,sleep 只会等待 5 秒)

PPS可能与你的用户的$SHELL最后一节相同。/etc/passwd

$ man login

$HOME、$USER、$SHELL、$PATH、$LOGNAME 和 $MAIL 的值根据密码条目中的相应字段设置。

答案3

!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

制作上述文件。别忘了sudo chmod +x filename.sh

答案4

我这样做。文本文件的第一行是 !#/bin/bash

文本文件的后续行是命令(shell 脚本)。

将文件保存为 something.sh

打开文件的属性并启用将文件作为程序运行。

现在,双击该文件时,我可以选择运行它。

相关内容