再次感谢老师~问题已解决,.desktop可以用Path参数配置工作目录,学到了,开心astolia 写了: ↑2023-01-17 12:47我上面第二段写的你都没看是不是?.desktop文件只是一个纯文本配置文件,并不是一个linux原生支持的可执行文件。你看到的双击它就有一个程序启动,并不是它自身去运行的,而是其他的某个程序去解析了它的内容,再去运行的。你首先需要弄清楚的就是这某个程序到底是哪个。这个很容易查到,就写在进程的parent pid即ppid里。gnome的系统监视器没把ppid列出来,但可以在设置里选择显示依赖关系,就可以以树状结构显示进程的父子关系了。再通过/proc/进程ID/cwd,就能知道到底是哪一级的进程更改了工作目录
有规范在 https://specifications.freedesktop.org/ ... ec/latest/
规范中有明确规定可以通过Path来指明工作目录 https://specifications.freedesktop.org/ ... 01s06.html
不过如果你设的是个相对路径,负责解析执行它的程序一般仍然会是相对于自己的工作目录来设定,而不是.desktop文件所在的目录。
一般的做法就是4楼所说的,在.desktop文件里执行一个中间脚本而非最终程序,在中间脚本中通过dirname $0来获取脚本所在的目录,再以此为基准切换到最终程序的目录来执行。这样就不用去管运行环境的工作目录的事了
更深入的运行过程对于我这样的菜鸟,要完全理解的话还需要很长的路要走啊