Edited at

sshした先に.bashrcや.vimrcを持って行きたい人のためのsshrc

More than 3 years have passed since last update.

いろんなサーバーにsshしてちょろっと設定を確認したりするときってあると思います。

ただその時にllがつかえなかったり、vimのタブが空白4つがいいのに8文字分の広さのtab文字だったりして、ちょっとずつストレスが溜まっていきます。

やっぱりserverfaultでもおなじ苦労をしている人がいました。


vim - How to bring .vimrc around when I SSH? - Server Fault

http://serverfault.com/questions/33423/how-to-bring-vimrc-around-when-i-ssh


ただここにあるようにdotfilesとして保存して先でcloneするのもとても面倒くさい。第一各サーバーへ変更を入れないといけないし。SSHの秘密鍵みたいに携えていきたい。

そこで探していたらsshrcというツールを見つけてこれが結構便利だったので簡単に紹介します。


sshrcとは?

まさにさっきの問題の解決策といえるもの。


Russell91/sshrc: bring your .bashrc, .vimrc, etc. with you when you ssh

https://github.com/Russell91/sshrc


Macならbrewで簡単に入ります。

$ brew install sshrc

sshの代わりにsshrcコマンドを使うことで、~/.sshrcに記述したコマンドをssh直後に自動で実行させることができます。

$ echo "alias ll='ls -l'" >> ~/.sshrc

$ sshrc me@myserver
$ type ll
ll is aliased to `ls -a'

シンプルな動作でわかりやすいですね。


vimrcをもっていく

では早速vimrcを持ち歩きましょう。~/.sshrc.dに.vimrcをいれて~/.sshrcでそれを読み込むということをします。

$ mkdir ~/.sshrc.d

$ cd ~/.sshrc.d && ln -s ../.vimrc .vimrc/
$ cat << 'EOF' >> ~/.sshrc
export VIMINIT="let
\$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
EOF
$ sshrc me@myserver
$ vim # .vimrcが読まれてる!!

このとき.vimrcにNeobundleで管理しているbundleを読み込んでいて、bundleはいつもdotfilesリポジトリ下でNeobundleをgit submoduleしているんで、~/.vim/bundle/neobundle.vim/がないときはそれらを読まないという変更をしました。

基本的にtabstopとかset nuとか基礎的なものだけでもできれば満足です。

if isdirectory(expand("~/.vim/bundle/neobundle.vim/"))

NeoBundle 'scrooloose/nerdtree'
NeoBundleCheck
" ほかにもいろいろ...
endif


終わりに

いままで結構小さなストレスだったので、こいつを発見できてよかった。

ちょっと触った感じはかなり便利です。もう少し使ってみて問題なさそうだったらalias ssh='sshrc'してしまおうかと思います。

私の使っている例はdotfilesを見ればわかるので興味がある人は見てみてください。


ikuwow/dotfiles: my dot files

https://github.com/ikuwow/dotfiles