我想知道如何编写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'
sh -c 'COMMAND'
运行在 $PATH 中找到的执行 COMMAND 的“sh”二进制文件(在许多系统上,sh
是符号链接bash
,但出于可移植性考虑,“sh”是首选)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
打开文件的属性并启用将文件作为程序运行。
现在,双击该文件时,我可以选择运行它。