名校课程推荐 | 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
命令可以包含设备特定的设置。你甚至可以在单独的存储库中追踪这些设置。
如果你希望不同的程序共享某些配置,这个想法也很有用。例如,如果你希望bash
和zsh
共享同一组别名,你可以把它们写在.aliases
下,并在bash和zsh中都包含以下块。
# Test if ~/.aliases exists and source it
if [ -f ~/.aliases ]; then
source ~/.aliases
fi
资源
GitHub does dotfiles:dotfiles框架、实用程序、案例和教程
Shell startup scripts:你的shell中使用的不同配置文件的说明