LoginSignup
893
870

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-03-13

いろんなサーバーに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

追記

Kyratという、sshrcと同様に.bashrc等をssh先に持っていくsshのラッパーがあり、こちらを少し前にしばらく使っていました。

SSH wrapper script that brings your dotfiles always with you on Linux and OSX
https://github.com/fsquillace/kyrat

sshrcを意識して作られている様子で、Comparison with sshrcなんていう比較表があったりします。細かい違いは中身を見てみてください。

sshrcは更新がもうあまりされていないので、最近の更新頻度が高くownerがちゃんと返事をしてくれるkyratに移行していました。ただかなりいろんなファイルをsshした先に持っていこうとしたときにkyratでは持っていけるファイルに制限があり、sshrcはカスタマイズ次第で何でも持っていけるので、結局sshrcに戻りました。

893
870
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
893
870