我使用 Arch Linux。
我使用 SSDM 作为显示管理器,但我已通过以下方式禁用它:
sudo systemctl disable sddm
我已将代码放入/etc/profile
,中$HOME/.bash_profile
,$HOME/.bashrc
以便在获取这些文件时进行回显。
我的$HOME/.bash_profile
正在采购$HOME/.bashrc
(就像这样,我只是添加了代码以在发生这种情况时进行回显):
if [[ -f ~/.bashrc ]]; then
echo "$HOME/.bash_profile is sourcing $HOME/.bashrc"
. ~/.bashrc
fi
我正在导出以下变量$HOME/.bashrc
:
export R_LIBS_USER='MY_VALUE'
我启动我的电脑。
它显示一个提示(在 TUI/命令行中),要求输入用户名和密码。
我将它们放入并按 Enter 键。
/etc/profile
是源。
$HOME/.bash_profile
是源。后者的来源$HOME/.bashrc
。这意味着R_LIBS_USER
正在导出。
我被重定向到提示。
我愿意:
sudo systemctl start ssdm
由于 SSDM 是该 shell 的子级,因此它应该继承R_LIBS_USER
.
SSDM 打开,我启动 Wayland KDE 会话。
由于此会话是 SSDM 的子级,因此它应该继承R_LIBS_USER
.
我从 KDE 打开 RStudio。
但R_LIBS_USER
仍然是默认值,不是我在$HOME/.bashrc
.
我用以下命令显示 R 中变量的值:
Sys.getenv("R_LIBS_USER")
我的推理哪里失败了?
答案1
由于 SSDM 是该 shell 的子级,
不,这不对。它由 systemd (因此,该过程以前称为init
)按照 的指示启动systemctl
。
所以,这就是你的链条断裂的地方。