管理dotfiles抑制硬编码路径?

时间:2011-07-12 17:05:13

标签: macos bash unix dotfiles

今天我决定在存储库中管理和推送我的dotfiles。其动机是在多台mac机器和ubuntu服务器机器上重复使用相同的dotfiles。

我目前已经想到了这个结构:

├── bash
│   ├── aliases
│   ├── config
│   └── env
├── bash_profile
├── bashrc
├── hgrc
├── src
│   └── link.py
└── vimrc

link.py运行并创建bashrcbash_profile的符号链接,从~到克隆到此存储库的位置。

问题:1

我的bashrc内容:

source bash/env
source bash/config
source bash/aliases

问题是因为路径是相对的,找不到文件。我不想使用绝对路径,因为我失去了在任何我喜欢的地方克隆存储库的灵活性。

类似地,我的bash_profile内容:

source ./bashrc                       # same problem!
source ~/.bashrc                 

因为我之前将~/.bashrc符号链接到dotfiles/bashrc我可以联系到它。但它对我来说似乎仍然是一个肮脏的黑客。

问题:2

我应该在哪里保留自定义特定机器的路径。当然,我不想把它们放在存储库中,并且还要弄乱其他所有系统。目前,我的自定义路径位于~/.profile。我正在考虑从bash/env使用if来检查它是否存在,然后使用它,否则不使用它。

愿意听到更好的方法

3 个答案:

答案 0 :(得分:2)

我正在使用符号链接,而不是将其视为“脏黑客”。以前我很简单地复制所有文件(并且仍然为一些文件(不是bash)执行此操作),并且因为所有文件都是$ HOME / .something我使用“$ HOME”(不是'〜',因为'〜'没有用双引号扩展但$ HOME是。)

答案 1 :(得分:0)

由于我在这里没有得到太多回复,因此我已将src/link.py扩展为符号链接~/.bashdotfiles/bash,以便我可以bash/*使用~/.bash/* }}

我还在link.py中添加了一个忽略列表来忽略.hgbin目录,以便在执行os.listdir()时不会符号链接。

我仍然在寻找第二个问题的解决方案,虽然我在某个地方读到我可以为每台具有特定定制需求的机器使用单独的分支机构,但它现在似乎是最接近的清洁解决方案。

答案 2 :(得分:0)

答案确实很晚,但我仍然建议你检查 DFM (dotfiles manager)。 DFM 以非常简洁的方式解决您遇到的问题: