如何保持 dotfiles 与系统无关?

k0p*_*kus 21 linux osx bash configuration dot-files

由于工作原因,我最近开始使用 OS X 并使用自制软件进行设置,以获得与 Linux 类似的体验。

但是,它们的设置存在相当多的差异。有些只需要在一个系统上就位。由于我的 dotfiles 位于 git 存储库中,我想知道我可以设置什么样的开关,以便某些配置仅适用于 Linux 系统而其他配置适用于 OS X。

至于点文件,我指的是,其中包括.bash_profiles.bash_alias

Mar*_*rco 22

尽可能保持点文件的可移植性,避免依赖于操作系统的设置或需要特定版本工具的开关,例如,如果您不在所有系统上使用 GNU 软件,请避免使用 GNU 语法。

您可能会遇到需要使用系统特定设置的情况。在这种情况下,请使用带有单独设置的 switch 语句:

case $(uname) in
  'Linux')   LS_OPTIONS='--color=auto --group-directories-first' ;;
  'FreeBSD') LS_OPTIONS='-Gh -D "%F %H:%M"' ;;
  'Darwin')  LS_OPTIONS='-h' ;;
esac
Run Code Online (Sandbox Code Playgroud)

如果任意应用程序的配置文件需要不同的选项,您可以检查应用程序是否提供兼容性开关或其他机制。对于vim,例如,你可以检查版本和补丁号,以支持功能的旧版本,或用不同的功能集编译的版本,没有。示例片段来自.vimrc

if v:version >= 703
  if has("patch769")
    set matchpairs+=“:”
  endif
endif
Run Code Online (Sandbox Code Playgroud)