我有一个名为 的脚本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
进入display
,我会得到一个空行。所以环境变量还没有初始化。很好 - 我尝试添加exec /bin/bash -c "source ~/.bashrc"
上面的行,但这似乎没有什么区别。如何确保 i3 启动时初始化该变量?
答案1
i3 是否由其他用户执行,请尝试提供源命令的绝对路径,而不是使用 ~ 的相对路径
答案2
这是为我回答的在 Reddit 上。问题是它.bashrc
仅由 bash 加载 - 将环境变量放入~/.profile
意味着它可以正确运行。