我已经创建了一个bin
目录,$HOME
其中包含用于加载 Firefox 配置文件的 shell 脚本;这样,我就可以使用一个简单的命令(例如)facebook
来打开为我的 Facebook 帐户保留的 Firefox 配置文件。
不过,我无法让桌面条目与此设置配合使用。我有一个桌面条目,其中$HOME/.local/share/applications
包含以下Exec
行:
Exec=env PATH=${PATH}:${HOME}/bin facebook
当我选择此启动器时,什么也没有发生。如果我在目录中单击它,系统会像询问任何其他桌面条目一样询问我是否希望启动它,尽管缺少可执行权限。(我已经确认这在许多其他桌面条目中按预期工作,当我选择“仍然启动”时,应用程序会成功启动。)如果我从我的 DE 提供的任一菜单(Xfce 的 Whisker 菜单和传统的应用程序菜单,如果有帮助的话)访问它,同样什么也没有发生。我已经确认中的 shell 脚本bin
是可执行的,我可以通过单击 Thunar 中的脚本图标或从终端打开它来成功启动 Firefox 配置文件。我还有许多桌面条目,我在其中设置了其他环境变量,例如HOME
,如上所述,无论我如何访问它们,它们都可以毫无问题地启动。
我意识到有百万种其他方法可以做到这一点;我可以在 .desktop 文件中提供脚本的完整路径,我可以创建一个带有适当 CL 开关的 Firefox 启动器Exec
,我可以将${HOME}/bin
其添加到PATH
/etc/profile 中的变量中,等等。(请注意,从 .bashrc 添加${HOME}/bin
到PATH
似乎并不能解决这个问题,即使它是在登录时设置的,而不仅仅是在会话中获取。)我主要是好奇这是否可以工作,特别是对于它为编写桌面条目提供的额外简约,因为如果可以帮助的话,我不想在像这样的孤立实例之外扩展我的路径。
bin
为了防止出现任何差异,这里也是我的目录中的完整 shell 脚本:
#!/bin/sh
firefox -no-remote -P Facebook
exit 0
编辑:尽管有许多关于语法错误的警告(因为 bash 似乎试图像 shell 脚本一样运行它),但当设置 u+x 时,此桌面条目也能正常运行。不过,这太愚蠢了,我绝对不想在 中有一个可执行的 .desktop 文件~/.local/share/applications
。
答案1
我认为桌面文件不会自行解析变量,但您可以尝试我在其他地方看到的技巧Exec=sh -c "PATH=$HOME/bin:$PATH facebook"
,看看是否有效。