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


39

我想知道如何编写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。

Answers:


46

桌面文件的内容应如下所示(请参阅如何使用文本编辑器创建.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,但是在两种情况下结果都是相同的。


1
第一个解决方案对我有用,所以我坚持下去。您知道为什么必须有$ SHELL吗?
Paradiesstaub

1
@Thibaut是的,当然
RaduRădeanu2014年

它对我有用,但是我想用sudo启动命令,然后在使用启动器创建时打开终端要求我输入密码。如何启动命令并防止这种行为?
E_Angel

1
@EliasAlves有点晚了,但是对于任何其他阅读此书的人来说:您不能期望运行需要root特权的命令而无需进行身份验证。(除非您明确配置系统来执行此操作,通常这是一个主意。)
code_dredd

我认为问题是:如何确保终端出现,以便终端不会消失,以便我们可以输入凭据
RockScience 18'Apr

2
!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

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


1
该解决方案的问题在于,终端立即消失并且用户不能输入东西。
Paradiesstaub 2014年

我忘了它叫什么,但我认为有一个选择可以保持终端运行。可能是hold
Lee Lee

2

只需添加

;$SHELL 

在命令末尾。

对我snapd来说,并不是几乎在晚上工作的时候都使用系统的全带宽刷新快照。

因此,这对我来说很容易创建.sh链接到.desktop文件的文件。文件
内容为.sh

echo <your password> | sudo -S systemctl stop snapd.service
sudo systemctl disable snapd.service;$SHELL

-S.sh文件第一行中的用来发送STDINPUTsudo命令,这意味着无需输入密码即可直接执行。

.desktop文件的内容为:

[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "/scripts/disable_snap.sh"
Icon=terminal
Terminal=true
Type=Application
Categories=Application;

0

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

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

将文件另存为something.sh

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

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


2
同样在这里,终端立即消失。
Paradiesstaub 2014年

它对我没有问题。创建shell脚本,在第一行添加!#/ bin / bash行。允许文件作为可执行文件运行。双击并选择在终端中运行。它只是工作。
hatterman 2014年

1
您确定终端不只是因为shell脚本完成而关闭了吗?在脚本的开头,将sleep设置为30,终端是否保持打开状态30秒钟?
hatterman 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.