我有一个名为 的脚本display
,它使用feh
. 它通过以下行执行此操作:
feh --bg-scale $WALLPAPER &
环境变量 $WALLPAPER 在我的.bashrc
. 如果我在登录后从普通 shell 执行脚本,则该脚本可以正常工作。
我希望脚本在启动时由 i3 执行。因此,我将以下行添加到~/.config/i3/config
:
exec display
它不起作用。我试图将 STDERR 重定向到一个文件,结果是:
feh: No loadable images specified.
See 'man feh' for detailed usage information
此外,如果我尝试进入echo $WALLPAPER
inside display
,我会得到一个空行。所以环境变量还没有初始化。很好 - 我试图exec /bin/bash -c "source ~/.bashrc"
在上面的行中添加,但这似乎没有什么区别。如何确保在 i3 启动时初始化此变量?
i3 是否由其他用户执行,请尝试提供源命令的绝对路径,而不是使用 ~ 的相对路径
这是在 Reddit 上为我解答的。问题是
.bashrc
仅由 bash 加载 - 将环境变量放入~/.profile
意味着它可以正确运行。