开机前修改/etc/xdg/lxsession/LXDE/autostart

开机前修改/etc/xdg/lxsession/LXDE/autostart

我想/etc/xdg/lxsession/LXDE/autostart在运行之前更改一些参数。我从 grep 命令获取参数。我想将它们添加到autostart文件中,但不知道如何。

目前,我所拥有的是grep "stuff" /file/one输出 1234。

我想将 1234 放入autostart文件中,例如

....
@program 1234
....

答案1

与往常一样,可能有一百万种方法可以做到这一点,而我阅读你的问题的方式是你以错误的方式解决你的问题,但首先是第一件事。

正确输入用户名和密码后,所有脚本/etc/X11/Xsession.d均按字母顺序获取(不是运行,这是一个非常重要的区别!)。因此,如果您希望在登录后但桌面环境启动之前发生一些逻辑,那么这就是放置脚本的地方。

在这样的脚本中你可以把

for item in $(grep "stuff" /file/one)
do
  echo "@program ${item}" >> /etc/xdg/lxsession/LXDE/autostart
done

这将添加您想要添加到文件中的行。 '>>' 使 shell 将行追加到文件末尾,而不是替换文件。这就是你问题的答案。

grep现在的问题是:使用这样的脚本,每次登录计算机时,您的结果都会添加到自动启动文件中。所以第一次该程序会运行一次。下次登录两次,下次登录三次。只要 grep 生成要添加到自动启动文件的结果,自动启动程序的列表就会不断增长。这就是为什么我一开始说你解决问题的方式是错误的。

此外,不仅仅是全球性的/etc/xdg/lxsession/LXDE/autostart。您可以~/.config/lxsession/LXDE/autostart为每个单独的用户创建一个文件。即使您是在计算机上工作的唯一用户,您也应该编辑主目录中的文件(~扩展到您的主目录)而不是全局文件。

作为最后的建议,如果您想运行程序,只需向您的~/.config/lxsession/LXDE/autostartfor shell 脚本添加一个条目,该脚本执行如上所述的 for 循环,而不是向某些文件添加行,而是实际运行命令。当您运行&行尾带有 的命令时,这些程序将在后台运行,并且脚本不会阻塞。

相关内容