Help us understand the problem. What is going on with this article?

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

More than 1 year has 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

追記

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に戻りました。

ikuwow
いろんなことをしているWebエンジニアです
https://ikuwow.github.io
bm-sms
高齢社会に適した情報インフラを構築することで価値を創造し社会に貢献し続ける
https://www.bm-sms.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away