Bash 跨计算机(VM、服务器等)同步终端设置

Bash 跨计算机(VM、服务器等)同步终端设置,bash,shell,vagrant,Bash,Shell,Vagrant,我最近在我的机器上安装了Vagrant,我注意到的第一件事是,当我登录到我的服务器时,我的终端配置没有同步 例如,我将shell从bash改为zsh,这为我做了很多漂亮的事情(比如删除区分大小写的自动完成)。但是在我的虚拟机上,或者在我的服务器上,所有这些很酷的东西现在都不见了。另外,像我的重要别名之类的东西也没有同步 现在,什么是正确的同步方式 编辑: 因此,目前,当我在本地计算机上创建/删除/编辑别名时,我必须将完全相同的更改复制到我的VM和我经常使用的所有其他服务器中。我认为这是一项非常耗

我最近在我的机器上安装了Vagrant,我注意到的第一件事是,当我登录到我的服务器时,我的终端配置没有同步

例如,我将shell从bash改为zsh,这为我做了很多漂亮的事情(比如删除区分大小写的自动完成)。但是在我的虚拟机上,或者在我的服务器上,所有这些很酷的东西现在都不见了。另外,像我的重要别名之类的东西也没有同步

现在,什么是正确的同步方式

编辑:


因此,目前,当我在本地计算机上创建/删除/编辑别名时,我必须将完全相同的更改复制到我的VM和我经常使用的所有其他服务器中。我认为这是一项非常耗时且不必要的任务。

我所做的是对我的点文件进行版本控制,并将它们保存在github上。Dotfiles只是根目录中以点开头的文件,例如.bashrc或.zshrc。它们是“不可见”文件,因此您必须使用ls-a,而不仅仅是ls来查看它们

以下是我的文件:

当我使用新机器时,我只是将存储库克隆到~/dotfiles 然后,我有一个名为setup.sh的bash脚本,它将可能已经在root中的所有旧点文件备份到~/dotfiles\u old中。然后,它创建指向~/dotfiles中文件的符号链接

它还安装了zsh和我的zsh,如果它还没有安装的话。它应该适用于linux或mac os x

下面是一篇文章,介绍如何对dot文件进行版本控制:


我要做的另一件事是使用kitchenplan:,它可以同步更多的设置,但这可能不是你要问的。这是我的kitchenplan配置:

用户的默认shell由系统上的用户帐户配置控制(可以使用
chsh
更改,也可以在用户创建时设置)。shell行为(别名等)由shell初始化脚本控制,这些脚本只是主目录中的文件(
.profile
.bash_profile
.bashrc
.zshrc
,等等)。对我的问题做了进一步的解释最近的一个趋势是使用git(或其他版本控制系统)来对一个人的主目录中的各种rc/config文件进行版本设置。这使得跨机器的同步变得很容易。有趣的是,你对此有进一步的了解吗?我对这一切都很陌生。在过去的几年里,互联网上已经有很多关于这个话题的博客帖子。我不知道有哪一个是即时的。我自己不这么做。真的很酷-谢谢你的回答。你可以参考一篇描述这一点的文章吗?或者我可以说服你写一篇关于这个主题的文章吗?我喜欢它自动安装zsh并设置你的别名。这正是我想要的开始。所有其他的东西(vim等,似乎有些过分了)。我添加了一个链接到我的答案