我经常使用sshlogin到远程服务器,执行标准的pipe理工作。 我有本地的bashrc / vimrc和其他各种我想远程使用的configuration文件。 通常我只能login到这些远程服务器,所以我不想在这些框上留下我的个人资料的副本,其中一些在客户网站上。
我曾考虑做一些破解,让远程服务器挂载一个fusefs webDAV或其他方式在会话期间将远程文件系统挂载到远程服务器。 但是,如果远程系统没有必要的软件包,或者被火墙挡住,则会出现问题。
是否有任何解决这个问题的交叉分布兼容,以及最近的Fedora / RHEL / Ubuntu / Debian / CentOS,不会干扰或减缓login过程?
[编辑]
我想其他的考虑之一是,我可能会与某人elses用户帐户login,所以我不想对configuration文件进行任何持久的更改。 理想情况下,我只是使用一些临时configuration文件的会议,然后放弃注销。 这可能会进入月球上一个棒的领土;-)
您可以使用ssh -t运行安装脚本,然后运行shell,然后清理脚本。 ssh -t允许你运行命令,但仍然在中间运行一个或多个shell,并正确地分配一个terminal
你的设置脚本可以包含wget'ing / curl'ing / scp'ing临时主目录到$HOME/tmphome类的东西,然后像这样运行一个脚本来启动一个shell:
#!/bin/sh HOME="$HOME/tmphome" cd "$HOME" bash --login
这应该做一个很好的隔离你的rc文件到tmphome,ssh -t会跳过用户的bashrc。 只要你的环境是轻量级的,复制不需要很长的时间。
你的命令可能类似于ssh -t user@host 'wget http://server/tmphome.tar.gz && tar -zxvf tmphome.tar.gz && rm tmphome.tar.gz && tmphome/shell.sh'
你为什么不使用像git这样的分布式版本控制系统来存储你的configuration文件? 这就是我所做的,它像一个魅力。
许多“老派”的Unixpipe理员将他们的通用设置存储在一个cvs存储库中。 他们第一次login到一个新的系统,他们cvs checkout该库,并configuration他们的.bashrc做一个cvs update来获得当前的设置,然后调用~/repo/bin/setup (其中repo是cvs checkout目标,并setup是一个脚本,其中添加/repo/bin到他们的$PATH设置alias ES等)。
这种方法不会在系统上留下设置,尽pipe在很多情况下这可能不是什么大问题。
你当然可以用svn或者gitreplacecvs 。
我对这个问题的解决方法是学习如何适应通用的标准,并编写我的手指macros来打开我所不能缺less的(非常less的)可选function。
问题是,对于只能解决一个快速问题的机器来说,设置环境所需的时间可能会超过实际解决问题所需的时间。 这个问题有点放大了,因为你expression的愿望,当你完成时,没有你的自定义设置离开系统 – 一个令人钦佩的情绪,因为我已经被一个pipe理员咬了(共享)根shell和readline。 当你习惯了默认的键盘绑定时,很难完成任何事情。
近来我已经相当幸运了, 每当我负责对服务器做事的时候,他们一直是“我的”,因为我有永久的pipe理责任/权限,而且我刚刚使用我的系统自动化工具来预先configuration机器我喜欢他们。
对于临时访问,如果我回到它,并迫切需要我自己的小环境,我会倾向于开发两个shell脚本:
这些脚本对于编写和debugging来说是相当多的工作,特别是跨越不同分布的弱点。 这就是为什么我刚刚学会了与任何轻松工作的理智默认相处的原因 – 如果您将来成为团队的一员,这是一个很好的习惯,并且需要与其他人共享一个环境先生vi模式bash壳,我瞪着你 )。