ubuntu创建快捷方式,并用root免密运行

Ubuntu创建快捷方式并root免密运行

1、在桌面文件夹下新建一个desktop文件,以文本编辑器打开

cd 桌面

touch MCUViewer.desktop

注意桌面文件夹在主文件夹下,有的名称为:desktop,我安装的中文版。

填入以下内容:

[Desktop Entry]
Name=MyApp 
Exec=/home/zhangxiaomeng/myprogram/build/MCUViewer  # 必须用绝对路径!
Icon=/path/to/icon.png     # 可选,但建议提供
Terminal=false              # 如果需要终端输入密码或命令为true,否则为false
Type=Application
Path = /home/zhangxiaomeng/myprogram/build #可选,程序中有相对目录就必须有
Categories=Utility;  #可选

关键点:

  • Exec= 必须使用 绝对路径(不能使用 ~ 或相对路径)。

  • 如果程序需要终端交互(如打印日志),Terminal=true,否则 false

此时桌面上应该有了一个为MyApp的图标,带一个小叉号。

2、为desktop文件赋予权限,打开终端

3  图标右键-允许运行

此时程序应该就能启动了。

4、需要注意的问题

  • 如果程序代码中使用 相对路径(如 "./fonts/xxx.ttf"),则程序运行时的工作目录(Working Directory)必须正确。

  • 解决方法:在 .desktop 文件中指定工作目录(Path=):

    [Desktop Entry]
    Exec=/path/to/your/program
    Path=/path/to/your/program_dir  # 设置工作目录为程序所在文件夹

.desktop 文件的 Exec= 必须使用 绝对路径,例如:

ini

Exec=/home/username/projects/my_app  # ✅ 正确
Exec=~/projects/my_app              # ❌ 错误(不能用 ~)
Exec=./my_app                       # ❌ 错误(不能用相对路径)

5、给程序赋予root权限

因为我的程序需要root权限,需要sudo,所以exec改为:

Exec=sudo  /home/zhangxiaomeng/myprogram/build/MCUViewer

Terminal=true

终端改为True,来输入密码。

因为我的程序中有相对路径,用sudo后path被改变了,设置的path无效,所以又改了一下:

Exec=sudo  -E  /home/zhangxiaomeng/myprogram/build/MCUViewer

Terminal=true

这样就能用了,但是需要终端输入密码,体验感不好。

6、root免密设置

终端输入:

echo "$USER ALL=(root) NOPASSWD:/home/zhangxiaomeng/job/MCUViewer/build/MCUViewer" | sudo tee /etc/sudoers.d/run_my_program

这时双击桌面快捷方式,没有反应,在终端输入测试,提示“sudo:无权保留环境”

实在没办法,我就把程序里的相对路径改成绝对路径,desktop改为

Exec=sudo   /home/zhangxiaomeng/myprogram/build/MCUViewer

Terminal=false

成功运行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值