是否可以让SSH会话在登录时使用所有本地配置文件(.bash_profile,.vimrc等)?这样,您就可以在远程会话中编辑vim中的文件.
我刚刚遇到了两个替代方法,只是做了一个git clone
你的dotfiles.我不赞成其中任何一个,也不能说我已广泛使用,所以我不知道这些中是否存在任何陷阱.
sshrc是一个工具(实际上只是一个大的bash函数),它复制本地rc文件而不会永久地将它们写入删除用户$HOME
- 这个想法可能是其他人使用的共享管理员帐户.似乎也可以为不同的远程主机进行自定义.
LocalCommand
此博客文章提供了一种在登录远程主机时自动运行命令的方法.它将一组文件划分并管理到遥控器,然后在远程的$ HOME上取消它们:
你的本地人~/.ssh/config
会是这样的:
Host * PermitLocalCommand yes LocalCommand tar c -C${HOME} .bashrc .bash_profile .exports .aliases .inputrc .vimrc .screenrc \ | ssh -o PermitLocalCommand=no %n "tar mx -C${HOME}"
您可以修改上述内容,仅在某些主机上运行命令(而不是*
通配符),也可以为不同的主机进行自定义.使用此方法,每个主机可能会有相当多的重复 - 尽管您可以将整个打包tar c ... | ssh .. "tar mx .."
成一个脚本.
请注意,上面的内容看起来像连接时会破坏遥控器上的相同文件,因此请谨慎使用.
我所做的是将所有配置文件保存在中央服务器上的dotfiles.git中.
您可以对其进行设置,以便在您进入远程计算机时自动提取最新版本的dotfiles.我做这样的事情:
ssh myhost cd ~/dotfiles git pull --rebase cd ~ ln -sf dotfiles/$username/linux/.* .
注意:
要将它放在shell脚本中,您可以通过管道连接到ssh来自动执行远程计算机上的命令的过程.
"$ username"就在那里,您可以与您正在使用的其他人共享您的配置文件.
"ln -sf"创建所有dotfiles的符号链接,覆盖任何本地文件,这样〜/ .emacs链接到版本控制文件〜/ dotfiles/$ username/.emacs.
使用"linux"子目录只是为了允许跨平台的配置更改.我在dotfiles/$ username/mac下也有一个mac目录./ mac目录中的大多数文件都是从linux目录中符号链接的,因为它非常相似,但有一些例外.
最后,请注意,您可以使用主机名等更加复杂,而不仅仅是通用的"linux".使用dotfiles.git,您还可以从朋友那里搜索dotfiles,这很棒 - 每个人都有自己的一套小技巧和黑客.
不,因为它不是使用配置文件的SSH,而是远程shell.
我建议您将配置文件保存在Subversion或其他一些VCS中.这是我如何做到的.