我应该如何针对不同的操作系统自动更改 .zshrc?

我应该如何针对不同的操作系统自动更改 .zshrc?

我目前将大部分点文件存储在 git 存储库中,以便更轻松地在所有计算机上保持同步。我最近刚买了一台 Macbook,所以现在必须让我的所有点文件都支持 Linux 和 Darwin 之间的差异。我遇到的第一个不兼容问题是颜色编码ls,在 Linux 中这是标志--color=auto,而在 Darwin 中则是-G

我第一次尝试制作.zshrc便携式设备是执行以下操作:

case `uname` in
  Darwin)
    alias ls='ls -FG'
    ;;
  Linux)
    alias ls='ls -F --color=auto'
    ;;
esac

一旦我发现更多需要更改的内容,我可能会将计算机特定内容提取到单独的文件中,以使其更整洁。我主要想知道的是,除了使用来`uname`确定要运行哪些内容之外,是否有更好的方法可以做到这一点。

答案1

我曾经使用过这种机制:

envfile="$HOME/.bash/os.`uname`.sh"
if [ -r $envfile ]; then
    . $envfile
fi
envfile="$HOME/.bash/host.`uname -n`.sh"
if [ -r $envfile ]; then
    . $envfile
fi

然后我可以根据需要将 .bash 目录 rsync 到每台机器上,以使所有内容保持最新。

相关内容