如何在$XDG_CONFIG_HOME中进行zsh搜索配置

psy*_*ave 5 zsh zshrc

展望让我~一个更清洁的地方,我想移动尽可能多的用户配置文件导入$XDG_CONFIG_HOME,这是~/.config默认。所以我想将我所有的 zsh 用户文件存储在$XDG_CONFIG_HOME/zsh/. 到目前为止已经有了这个:

% ls $XDG_CONFIG_HOME/zsh/
histfile  zsh_cache zshrc
Run Code Online (Sandbox Code Playgroud)

很简单,你只需要填写你的~/.zshrc. 现在最棘手的部分似乎是让 zsh 直接读取 $XDG_CONFIG_HOME/zsh/zshrc 而无需从 ~/.zshrc 获取它。你将如何进行?

psy*_*ave 8

可以编辑/etc/zsh/zshenv以设置$XDG_CONFIG_HOME目录和$ZDOTDIR. 不过,这需要对此文件的写权限。

因此,$HOME如果 zsh 读取时定义了它(我不知道是不是这种情况),您可以添加到您的/etc/zsh/zshenv

if [[ -z "$XDG_CONFIG_HOME" ]]
then
        export XDG_CONFIG_HOME="$HOME/.config/"
fi

if [[ -d "$XDG_CONFIG_HOME/zsh" ]]
then
        export ZDOTDIR="$XDG_CONFIG_HOME/zsh/"
fi
Run Code Online (Sandbox Code Playgroud)

  • 注意`$XDG_CONFIG_HOME/zsh/` 中的文件必须用前导点`.zshrc` 命名,如果你想让zsh 自动读取它们。我不知道 zsh 是否可以使用诸如“$ZSHRC”之类的变量来更改它。 (2认同)

nom*_*mad 5

最好不要将 a/放在包含特定路径的任何变量的末尾。

例如,$XDG_CONFIG_HOME/zsh转换为"$HOME/.config//zsh"/重复因为XDG_CONFIG_HOME/.

所以我认为你的答案应该是——

if [[ -z "$XDG_CONFIG_HOME" ]]
then
        export XDG_CONFIG_HOME="$HOME/.config"
fi

if [[ -d "$XDG_CONFIG_HOME/zsh" ]]
then
        export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
fi
Run Code Online (Sandbox Code Playgroud)