Dotfiles 管理最佳实践

背景介绍

在Unix和类Unix操作系统中,"dotfiles"是以点(.)开头的文件或目录的通用术语。这些文件通常用于存储用户特定的配置信息、设置和个人数据。点作为文件名的前缀表明这些文件是隐藏的,不会在普通的文件列表中显示,这有助于保持用户主目录(home directory)的整洁和避免混淆。

以下是一些常见的dotfiles和它们的用途:

  1. .bashrc.bash_profile

    • 这些文件用于配置Bash shell的环境变量和自定义命令别名。
    • .bashrc通常包含与当前用户会话相关的配置,而.bash_profile包含与登录过程相关的配置。
  2. .zshrc

    • 类似于.bashrc,这是配置Zsh shell的文件,用于定义环境变量、别名和自定义函数。
  3. .vimrc

    • 用于配置Vim文本编辑器的行为和外观,包括缩进设置、颜色方案等。
  4. .gitconfig

    • 用于配置Git版本控制系统的个人设置,如用户名、电子邮件地址、别名等。
  5. .ssh/config

    • 用于配置SSH客户端的文件,可以定义主机别名、身份验证方法等。
  6. .profile

    • 用于配置用户的登录环境,包括环境变量、PATH设置和其他登录配置。
  7. .inputrc

    • 用于配置Readline库,它控制命令行编辑器的行为,如Bash中的命令行编辑。
  8. .Xresources

    • 用于配置X Window System的外观和行为,包括终端和窗口管理器的配置。
  9. .emacs

    • 用于配置Emacs文本编辑器的设置和扩展。
  10. .config/目录:

    • 这是一个常见的存储配置文件的目录,各种应用程序可以在其中创建自己的配置文件,例如.config/termite/config用于Termite终端模拟器的配置。

这些dotfiles通常位于用户的主目录(通常是/home/username/Users/username)中,但也可能存在于其他目录中,具体取决于配置和需求。用户可以根据自己的喜好创建、编辑和管理dotfiles,以满足其特定需求和偏好。这些文件和目录对于个性化和自定义Unix系统的使用至关重要,因为它们允许用户根据自己的要求调整和配置系统和应用程序。

如果您以前没有在 Git 存储库中跟踪配置,您可以使用以下几行轻松开始使用此技术:

git init --bare $HOME/.cfg
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
echo "alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'" >> $HOME/.bashrc
  • 第一行创建了一个名为 ~/.cfg 的文件夹,它是一个[Git 裸存储库](http:// www.saintsjd.com/2011/01/what-is-a-bare-git-repository/),用于跟踪我们的文件。
  • 然后,我们创建了一个名为 config 的别名,我们将在与配置存储库交互时使用它,而不是常规的 git
  • 我们设置了一个标志 - 局部于存储库 - 以隐藏尚未明确跟踪的文件。这样,当您稍后键入 config status 和其他命令时,您不感兴趣的文件将不会显示为“未跟踪”。
  • 此外,您可以手动将别名定义添加到您的 .bashrc,或者使用提供的第四行以方便使用。

我将上述内容封装成了一个代码片段,并在 Bitbucket 上创建了一个短链接,以便您可以使用以下方式设置:

curl -Lks http://bit.do/cfg-init | /bin/bash

在执行设置后,您可以使用普通命令版本化 $HOME 文件夹中的任何文件,只需将 git 替换为您新创建的 config 别名,例如:

config status
config add .vimrc
config commit -m "Add vimrc"
config add .bashrc
config commit -m "Add bashrc"
config push

将您的 dotfiles 安装到新系统(或迁移到此设置)

如果您已经在Git 存储库中存储您的配置/dotfiles,在新系统上,您可以按照以下步骤迁移到此设置:

  • 在安装之前,请确保您已经将别名提交到您的 .bashrc.zsh 中:
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
  • 并且您的源存储库忽略了您将克隆的文件夹,以避免创建奇怪的递归问题:
echo ".cfg" >> .gitignore
  • 现在将您的 dotfiles 克隆到您的 $HOME
git clone --bare <git-repo-url> $HOME/.cfg
  • 在当前 shell 范围内定义别名:
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
  • 从裸存储库中检出实际内容到您的 $HOME
config checkout
  • 上述步骤可能会失败,并显示类似以下消息:
error: The following untracked working tree files would be overwritten by checkout:
    .bashrc
    .gitignore
Please move or remove them before you can switch branches.
Aborting
  • 这是因为您的 $HOME 文件夹可能已经有一些默认配置文件,它们将被 Git 覆盖。解决方案很简单:如果您关心这些文件,请备份它们;如果您不关心,可以删除它们。我为您提供了一个可能的快速方法,将所有有问题的文件自动移动到备份文件夹:
mkdir -p .config-backup && \
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
xargs -I{} mv {} .config-backup/{}
  • 如果您遇到问题,请重新运行检出操作:
config checkout
  • 在此特定(本地)存储库上将 showUntrackedFiles 标志设置为 no
config config --local status.showUntrackedFiles no
  • 您已完成,从现在开始,您可以输入 config 命令来添加和更新您的 dotfiles:
config status
config add .vimrc
config commit -m "Add vimrc"
config add .bashrc
config commit -m "Add bashrc"

再次作为一个捷径,以便在任何新设置的机器上不必记住所有这些步骤,您可以创建一个简单的脚本,就像我做的那样,将其存储为[Bitbucket 片段](https://bitbucket.org/ snippets/nicolapaolucci/7rE9K),创建一个短链接 并像这样调用它:

curl -Lks http://bit.do/cfg-install | /bin/bash

为了完整性,这是我最终得到的东西(在许多全新的[Alpine Linux] (http://www.alpinelinux.org/) 容器上进行了测试):

git clone --bare https://bitbucket.org/durdn/cfg.git $HOME/.cfg
function config {
   /usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME $@
}
mkdir -p .config-backup
config checkout
if [ $? = 0 ]; then
  echo "Checked out config.";
  else
    echo "Backing up pre-existing dot files.";
    config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{}
fi;
config checkout
config config status.showUntrackedFiles no

总结

以上就是本文所有内容了,希望能对你有所帮助,能够解决 Dotfiles 管理问题。

如果你喜欢本文,也请务必点赞、收藏、评论、转发,这会对我有非常大的帮助。请我喝杯冰可乐也是极好的!

已完结,欢迎持续关注。下次见~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanbaofengs

请我喝一杯冰可乐吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值