$ /path/2/myGUI.sh
形式根据: How to create desktop shortcut launcher on Ubuntu 18.04 Bionic Beaver Linux - LinuxConfig.org
手工或是使用 gnome-desktop-item-edit 创建 .desktop 声明, 都可以在桌面形成标准软件图标;
但是, 双击没任何反应, 并没形成 .sh 中记录的运行时日志
两种方式构建的 .desktop 主要差异只是首行是否有
#!/usr/bin/env xdg-open
根据: desktop - How to launch shell script with double click in CentOS 7 - Unix & Linux Stack Exchange
这里建议可以直接链接脚本本身
$ cd $HOME/Desktop
$ ln -s $HOME/bin/myscript.sh MyScript
只是没图标, 也可以接受, 但是,按照文章完成了部署, 到桌面点击依然没任何反应
其中 .desktop 声明文件中尝试过:
Exec=/path/2/myGUI.sh
Exec=gnome-terminal -e "bash -c '/path/2/myGUI.sh;$SHELL'"
Exec=gnome-terminal -e "bash -c '/path/2/myGUI.sh'"
Exec=gnome-terminal -e "bash /path/2/myGUI.sh"
Exec=bash /path/2/myGUI.sh
Exec=sh /path/2/myGUI.sh
都不能正常运行, 弹出 PyQt4 构建的软件界面
参考: How to Create a .Desktop File For Your Application in Linux - Make Tech Easier
那么当前问题就变成:
launcher - How to execute a script just by double clicking like .EXE files in Windows? - Ask Ubuntu https://askubuntu.com/questions/138908/how-to-execute-a-script-just-by-double-clicking-like-exe-files-in-windows
发现这种套在终端中运行的形式 Exec=gnome-terminal -e "bash -c './script.sh;$SHELL'"
解决原先脚本运行时参数问题;
1
liangzi 2019-05-22 13:42:34 +08:00
[Desktop Entry]
Name=程序名称 Type=Application Terminal=false Exec=/path/file 指向你脚本路径 Icon=/path/icon_file 指向你程序启动后的图标 ---- 这种 Exec=sh /path/2/myGUI.sh 没试过 不确定 |
2
ZoomQuiet OP @liangzi 是也乎,( ̄▽ ̄)
多谢指点... 已经解决, 果然不是 .desktop 的声明问题, 而是那个 .sh 的运行问题; - 因为, 通过 .desktop 运行时, 其实和 crontab 运行的 shell 一样 + 是个特殊的无环境变量 shell 环境 + 这就解释了, 为什么在终端中运行良好, + 但是, 无论从 .desktop/桌面脚本链接 /File 中点击 run 都不正常 - 通过追加日志输出 - 最后捕捉到了运行失败的代码行 - 才发现: + 为了兼容不同主机 /环境下的运行 + 依赖了一个 ENV 路径数据 + 但是, .desktop 调用时, 是没这个 ENV 路径的 + 导致本身 Python 程序无法运行 + 表现出来就是图标调用失败 - 解决方法也很囧: + 在供给 .desktop 调用的 .sh 中 + 使用 `export 依赖路径_ROOT="/path/2/约定的程序安装目录"` + 自己临时给自己配置一个 以上... 可以说, 这是 Linux 对桌面环境视之为一个沙箱的安全控制策略了. |
3
codehz 2019-05-22 17:53:55 +08:00
其实你可以手工 xdg-open 然后看输出的。。。
|