我有一个python脚本文件,当我从终端使用它时,它可以正常工作。
现在我创建了以下.desktop
文件,以便轻松启动它:
[Desktop Entry]
Name=Test
GenericName=Test
Comment=My test script
Type=Application
Exec=/opt/test.py
Icon=/opt/test.png
Categories=Utils;
当我启动它时,会出现GTK窗口,但单击调用init.d脚本的按钮会使其无法正常工作。
因此,添加Terminal=true
会使其完美运行,但我不希望该终端打开。
所以我已经输入以下代码来记录环境变量:
import os
with open("/tmp/py_env.log", "w") as env_log:
env_log.write(str(os.environ))
并发现了差异。
所以我的问题是如何编写.desktop文件,以便我的应用程序运行就像我从终端启动它(没有打开的终端:))
答案 0 :(得分:1)
问题是有效的,但我认为“复制终端环境”是解决它的错误方法。
事实上,使应用程序工作的原因并不在于它是从终端启动,而是终端碰巧某些对您的应用程序很重要的环境变量
因此,你应该瞄准的是始终正确设置这些环境变量,而不是假设终端环境总是会碰巧包含它们所有所有用户的时间。
因此,你应该:
.desktop
文件正常工作的内容),以及脚本工作所需的价值答案 1 :(得分:0)
此问题类似于.bashrc not read when shell script is invoked from desktop shortcut
~/.bash_profile
而不是~/.bashrc
初始化您的环境
*.desktop
OR
~/.bashrc
文件调用一个初始化您的文件的包装器
环境 - 例如通过采购{{1}}(或任何脚本是
现在负责)。第二个解决方案更具体(不会影响shell的所有其他无关启动)因此应该是首选。
答案 2 :(得分:0)
感谢任何人参与此问题。
我已通过使用pkexec
代替gksudo
解决了此问题。
pkexec
似乎重用了当前的用户环境,然后我就不再有这个问题了。
感谢。