使用arch-linux
withxorg
和dwm
,环境变量似乎不适用于整个系统。例如,在启动NNN
文件浏览器时手动启动终端仿真器 ( st
) 全部书签可用(NNN 通过环境变量加载设置,这里在.profile
文件内部设置,从.bashrc
文件中加载它们)。但是,当我通过 -keybind 启动 NNNdwm
时书签不(!)可用(这里 NNN 是通过st -e nnn
更精确的方式启动的,即通过的文件{ "st", "-e", "nnn", NULL };
内部)。所以看来这里的环境变量在这种情况下没有加载。config.h
dwm
你知道为什么吗?或者说如何解决这个问题?
编辑添加了.profile
文件内容:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
EDIT-2:在里面添加了书签加载行.bashrc
export NNN_BMS='h:~/;d:~/Documents/'
答案1
.profile
由基于 Bourne 的 shell 读取(例如/bin/sh
和bash
)。如果没有启动这样的 shell,则.profile
不会被读取。听起来你是在没有外壳的dwm
情况nnn
下启动的st
。
如果在父进程(在本例中为 dwm 以及任何前因)中设置了环境变量,则它将由所有生成的子进程继承。根据您启动 X 的方式,有很多方法可以做到这一点 - 太多,无法在没有更多上下文的情况下枚举,但可能在~/.xinitrc
或中~/.xsession
。
另一种方法是使用 PAM,我认为默认情况下,在 arch 上,它会$HOME/.pam_environment
在您登录时读取,并且您可以NAME=VALUE
将对放入其中。