我目前将大部分点文件存储在 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 到每台机器上,以使所有内容保持最新。