我想使用不同的 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,应有尽有。
享受使用多重提示的乐趣。