我可以为 $HOME 设置多个目录吗?

我可以为 $HOME 设置多个目录吗?

我想知道我是否可以做类似的事情:

export HOME=$HOME:$HOME/.configs

这样我就可以将所有自定义配置保存在 ~/.configs 中。

我知道可以设置它,但我不确定它是否会在以后引起问题。这安全吗?有没有更标准的方法?

答案1

首先,尽管有可能,而且专家在某些罕见的情况下可能需要这样做,但您不应该更改环境变量的值HOME,它是由您的系统设置的。

其次, 的内容HOME预计只有一个(现有)目录:您的主目录。

看什么POSIX 说关于HOME

HOME:系统应在登录时将此变量初始化为用户主目录的路径名。

答案2

$HOME/.config目录是XDG规格且由 的值决定$XDG_CONFIG_HOME

从理论上讲,这意味着如果您希望将配置文件存储在其他位置,则只需设置$XDG_CONFIG_HOME为该首选位置即可。

然而,在实践中,您很可能会发现盲目写入$HOME/.config/...而不是遵循 XDG 规范的软件实例。特别是因为它不是任何发行版的必需部分。

对于遵循 XDG 的应用程序,您还可以拥有一组目录($XDG_CONFIG_DIRS冒号分隔,例如$PATH)来定义应从中获取默认值的其他位置。该值的默认值应该是/etc/xdg

现在,您应该提出的下一个问题是:“好吧,那么我该在哪里设置$XDG_CONFIG_HOME?”不幸的是这变得相当复杂

总而言之,您可能会将其放入.profile(或.bash_profile, .bashrc) 中,但可能需要通过 PAM 进行全局配置。就我个人而言,我还没有尝试过这一点,特别是我不知道.profile基于 GUI 的登录环境如何使用基于解决方案的解决方案。

第二个问题可能是“如何将我的配置移动到这个新位置?”,这也是充满潜在问题。叹。

这里最简单的选择可能是使用指向$HOME/.config您首选位置的符号链接。这不仅可以处理设置方面的任何问题$XDG_CONFIG_DIR,还可以处理坚持直接在下面查看的应用程序的任何问题$HOME/.config

cd
test -d .config && mv .config .config_old
ln -s /path/to/preferred_config_dir .config

相关内容