如何使用多个 .zshrc?

如何使用多个 .zshrc?

我想使用不同的 zshrc,并使用单个文件来选择一个 zshrc,该文件保存变量并加载它们。我尝试查找它,但只有 iTerm2 的。我将不胜感激任何支持。谢谢。

答案1

我做了 Amint 记录的类似事情。这是针对 bash 的,但我对 Fish 做了同样的事情,它显然适用于 zsh

我的 .bashrc 变得笨重,所以我将它分成几个库(提示函数、别名、包装其他命令的函数等),并且我根据我正在使用的计算机进行单独的操作。

if [[ -d ~/.bash.d ]]; then
    shopt -s nullglob
    for file in ~/.bash.d/*.bash; do
        source "$file"
    done
    if [[ -d ~/.bash.d/"$(hostname)" ]]; then
        for file in ~/.bash.d/"$(hostname)"/*.bash; do
            source "$file"
        done
    fi
    shopt -u nullglob
    unset file
fi

因此,如果我创建新的东西,我可以将其放入适当的目录中,它将在下一个 bash 会话中处于活动状态。

答案2

(也可以在 Bash 和任何具有 .*rc 文件的 shell 上实现。)

为此,您可以进行如下目录设置:

~/
 .zshrc (main rc to choose profile)
 .zshenv (sources each rc)
 .zsh/profiles/ (rcs)
              zshrc1.zsh
              zshrc2.zsh
              ... 

首先,将其添加到 zshrc 的开头:

# Chooses zshrc1.
RC1_ENABLE="false"

# Chooses zshrc2.
RC2_ENABLE="false"

# Paste and edit to your likings.
source $HOME/.zshenv

然后,创建 .zshenv 文件并添加以下内容:

if [[ "$RC1_ENABLE" == "true"  ]]; then
  echo "{zshenv} Setting RC1 up with ZSH."
  source "$HOME/.zsh/profiles/zshrc1.zsh"
fi

if [[ "$RC2_ENABLE" == "true" ]]; then
  echo "{zshenv} Setting RC2 up with ZSH."
  source "$HOME/.zsh/profiles/zshrc2.zsh"
fi

之后,创建目录 .zsh/profiles。不过,这可以是您想要的任何内容。

然后,使用您在 zshenv 文件中添加的名称添加 RC。

之后,返回主 zshrc,并编辑以下行之一以激活 RC:

# Chooses zshrc1.
RC1_ENABLE="false"

# Chooses zshrc2.
RC2_ENABLE="true"

然后,打开一个新的 zsh 会话。

{zshenv} Setting RC2 up with ZSH.
user@hostname ~ $

你做到了!现在您可以在 RC 之间切换。您也可以同时使用两个 RC。如果您使用主题(Oh My ZSH!、Prezto,或者如果您是通过 bash(这是可能的)、Bash-it 进行的),请小心使用不同的主题。

您可能想要这样做的原因是出于个人、工作和学校的提示。您可能还想使用主题,但也想坚持使用原来的旧主机名%。您可能还想使用不同的别名。独立的功能、备用 RC,应有尽有。

享受使用多重提示的乐趣。

相关内容