在多台机器上保持 shell 配置同步
我是一个非常活跃的命令行用户,并且我到处都有 shell 帐户。 MacBook、Linux 台式机、Linux 服务器、XP 上的 Cygwin,应有尽有。
如何使用所有平台上可用的有限工具使我的 shell 配置(.bashrc
、.vimrc
等)在所有这些机器上保持同步?
我一直在以相当有限的方式使用 rsync,其中涉及在需要时手动复制一些文件,但我想要一种标准方法来在我的所有计算机上设置相同的基本 shell 环境。 告诉我你的 shell 帐户管理策略。
I'm a pretty active command line user and I have shell accounts all over the place. MacBooks, Linux desktop machines, Linux servers, Cygwin on XP, you name it.
How can I keep my shell configuration (.bashrc
, .vimrc
etc.) in sync across all these machines using the limited tools available across all platforms?
I have been using rsync
in a pretty limited manner that involves manually copying some files over when I need them, but I want a standard way for setting up the same basic shell environment across all my machines. Tell me your shell account management strategy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我在 Dropbox 上有一个文件夹,其中包含全局、每个操作系统和每个机器 shell 配置:
bashrc
在每台机器上加载,bashrc-Linux
、bashrc-Darwin
code> 加载在各自的操作系统上,并且一些配置特定于各个机器。 (顺便说一下,Darwin 是 OS X 类似 BSD 的内核的名称。)将它们联系在一起的是 bashbootstrap 文件。 它按照增加的特异性的顺序加载每个适用的配置文件,这允许每个操作系统和每台机器覆盖具有更高的优先级。 此外,我们会默默地跳过丢失的配置文件; 您无需为每台计算机创建空的配置文件来保持脚本正常运行。
在新机器上,在
~/Dropbox
上安装 Dropbox 后,我移走了默认的.bashrc
并在其位置上符号链接引导文件:哦,这里是
bashbootstrap
文件的内容:最后一点要注意的是,该脚本还提供了三个方便的别名,用于编辑 Bash 配置文件,而无需记住它们的存储位置。
editbashrc
:编辑全局配置文件。editosbashrc
:编辑特定于操作系统的配置文件。editlocalbashrc
:编辑特定于计算机的配置文件。我只在 Bash 上测试过这个,但它可以在其他 Bash(如 shell)上运行。 但是,正如他们所说,您的里程可能会有所不同。
我在此处发表了一篇关于此问题的博客文章。
I have folder on Dropbox with global, per OS, and per machine shell configs:
bashrc
is loaded on every machine,bashrc-Linux
,bashrc-Darwin
are loaded on their respective OSes, and several configs are specific to individual machines. (By the way, Darwin is the name of OS X's BSD-like kernel.)What ties it all together is the
bashbootstrap
file. It loads each applicable config file in order of increasing specificity, this allows per OS and per machine overrides to have higher precedence. Additionally, we silently skip missing config files; you need not create empty config files for each of your machines to keep the script happy.On a new machine, after installing Dropbox on
~/Dropbox
, I move away the default.bashrc
and just symlink the bootstrap file in its place instead:Oh, and here are the contents of the
bashbootstrap
file:One final note, this script also provides three convenience aliases for editing your Bash config files without having to remember where they are stored.
editbashrc
: Edit the global config file.editosbashrc
: Edit the OS-specific config file.editlocalbashrc
: Edit the machine-specific config file.I only tested this on Bash, but it could work on other Bash like shells. But, as they say, your mileage may vary.
I made a blog post about this here.
我过去曾为此使用过版本控制(svn,mercurial 等...)。 您可以设置自己的服务器,或使用托管服务器。 Dropbox 也可以使用。
I've used version control for this in the past (svn, mercurial, etc...). You can set up your own server, or use a hosted one. Dropbox also works.
如果您有权访问源代码管理,我只需将它们签入即可。这样您就可以在多台计算机上同步它们,并且可以在需要时进行比较/回滚。 如果您的工作中没有 CVS/SVN,则可以使用免费选项。
If you have access to source control, I'd just check them in. This way you get to sync them across multiple machines and you can compare/roll-back if need be. If you don't have CVS/SVN at work there are free options available.
我更喜欢不同机器上的 Vim、Fish、Sway 等配置文件略有不同,因此我编写了一个程序(filetailor)来处理这个问题,然后将结果与 Git 同步。
filetailor 是一个开源 Python 程序,可以使用设备特定的变量或使用文件中特定于设备的注释。
例如,除了主机名为
device1
的设备之外,以下行将在每个设备上被注释掉。I prefer slightly different configuration files for Vim, Fish, Sway, etc. on different machines, so I made a program (filetailor) to handle this and then sync the result with Git.
filetailor is an open-source Python program that can make small changes to files using device-specific variables or using device-specific comments in the files.
For example, the following line would be commented out on every device except the one with hostname
device1
.