名校课程推荐 | MIT《CS 实用工具课程》-配置文件

配置文件(Dotfiles)

很多程序都是用名为"dotfiles"的纯文本文件进行配置(因为文件名以.开头,比如~/.gitconfig),这样它们就默认隐藏在ls目录列表中)。

你使用的很多工具可能都有很多可以微调的设置。通常,工具都有专门的语言进行自定义,比如Vim编辑器的语言是Vimscript,shell有自己的语言。

根据你喜欢的工作流程自定义并调整你的工具,这会大大提高我们的工作效率。我们建议你花点时间自定义你自己的工具,而不是直接从GitHub克隆别人的配置文件。

你可能已经有一些配置文件设置,可以从以下地方看出:

  • ~/.bashrc

  • ~/.emacs

  • ~/.vim

  • ~/.gitconfig

有些程序不会直接把文件放到你的主文件夹下,而是放在~/.config下的一个文件夹里。

配置文件不是命令行应用程序专有的,比如,MPV视频播放器可以在~/.config/ mpv命令下配置编辑文件。

学习自定义工具

你可以通过阅读在线文档或手册页来了解你工具的设置。另一个方法是在网上搜索关于特定程序的博客文章,这些文章的作者会告诉你他们喜欢的自定义设置。还有一种了解自定义的方法是查看其他人的配置文件:你可以在GitHub上找到大量的dotfiles存储库-点击这里了解最流行的dotfiles存储库(但是我建议你们不要盲目复制它的配置)。

管理

应该如何管理你的配置文件?它们应该集中放在版本控制中它们自己的文件夹下,并使用脚本将其符号连接(symlink)到合适的位置。这有如下好处:

  • 易于安装 :如果你登录了一台新设备,在该设备上进行自定义只需要几分钟时间

  • 可以执行 :你的工具在任何地方都以相同的配置工作

  • 保持同步 :在一处更新配置文件,可以同步到其他地方

  • 变更追踪 :你可能要持续维护你的配置文件,版本历史对于长期项目来说很友好

    cd ~/src
    mkdir dotfiles
    cd dotfiles
    git init
    touch bashrc
    # create a bashrc with some settings, e.g.:
    #     PS1='\w > '
    touch install
    chmod +x install
    # insert the following into the install script:
    #     #!/usr/bin/env bash
    #     BASEDIR=$(dirname $0)
    #     cd $BASEDIR
    #
    #     ln -s ${PWD}/bashrc ~/.bashrc
    git add bashrc install
    git commit -m 'Initial commit'
    

进阶主题

特定设备的自定义

大多数时候,你想跨设备实现相同的配置,但有时,你希望在某台设备上有一个小的增量。以下是处理这种情况的几种方法:

为每台设备创建分支

通过版本控制维护每台设备的分支。这种方法从逻辑上来说很简单,但操作起来影响比较大。

If语句

如果配置文件支持if句,则使用if语句来应用设备特定的自定义。比如,你的shell可能会有这样的情况:

if [[ "$(uname)" == "Linux" ]]; then {do_something else}; fi

# Darwin is the architecture name for macOS systems
if [[ "$(uname)" == "Darwin" ]]; then {do_something}; fi

# You can also make it machine specific
if [[ "$(hostname)" == "myServer" ]]; then {do_something}; fi

包含命令

如果配置文件支持包含命令,则使用包含命令。比如,~/.gitconfig可以设置为:

[include]
    path = ~/.gitconfig\_local

然后在每个设备上,~/.gitconfig_local命令可以包含设备特定的设置。你甚至可以在单独的存储库中追踪这些设置。

如果你希望不同的程序共享某些配置,这个想法也很有用。例如,如果你希望bashzsh共享同一组别名,你可以把它们写在.aliases下,并在bash和zsh中都包含以下块。

# Test if ~/.aliases exists and source it
if [ -f ~/.aliases ]; then
    source ~/.aliases
fi

资源

练习

  1. 给你的配置文件创建一个文件夹,并设置版本控制

  2. 至少给一个程序添加配置,比如你的shell,使用自定义(开始可以是简单地通过设置$PS1来自定义shell提示符)

  3. 在一台新设备上设置一种快速安装配置文件的方法(无需手动)。它可以像shell脚本为每个文件调用ln -s命令一样简单,或者你也可以使用专门的实用程序

  4. 在一个新的虚拟机上测试您的安装脚本

  5. 将你当前所有的工具配置迁移到配置文件存储库

  6. 在GitHub上发布你的配置文件

客服