シェル芸で、ローカルにあるbashrcやvimrcをssh接続先で(ファイルをコピーとかせずに)利用する
Pocket

先日、ssh接続先でローカルのbashrcを使うシェル芸というのを書いたのだが、同じような方法を使えばvimrcやtmuxの設定ファイルも持っていけることに気づいた。
bashの–rcfileオプションのように、vimでも-uオプションで使用するvimrcファイルを指定できるので、bashと同じようにプロセス置換を利用してやればいい。

ただ、vimrcやtmux.confの場合、bashrcのように1回だけ読み込ませればそれでおしまいにはならない。
コマンドを実行するたびに設定ファイルを読み込むことになるので、起動してつなげっぱなしのbashとはすこしやり方が異なる。
vimやtmuxでやる場合、ローカルのvimrcやtmux.confの内容をbase64化して、それをプロセス置換で復号化したものを読み込むようなfunctionをbashrcとして登録して、それをaliasで指定してやればいい。ここで利用するvimやtmuxのfunctionも事前に作っておく必要はなく、sshコマンド実行時にそのまま生成させることができる。

Sponsored Links

ssh -t user@host '
    bash --rcfile <(
        echo -e ' $(cat <(echo "function lvim() { vim -u <(echo "$(cat ~/.vimrc|base64)"|base64 -d) $@ ; }") \
                        ~/dotfiles/{.bashrc,sh_function,sh_alias,bash_prompt} \
                        <(echo -e alias vim=lvim) | \
                        base64 
                   ) ' \
        |base64 -d)'

 

ここでは、3行目の処理でvimrcのfunctionを作成し、4行目でローカルにあるbashrcやプロンプトの設定ファイル等を読み込ませている。
そして、5行目でvimのエイリアスだけを単独で読み込ませている。

 

あまりにも設定ファイルのサイズが大きいと接続する際に遅くなりそうだけど、読み込ませるのはbashrcやvimrcのファイルなので、よほどのことがなければそこまで大きいサイズになることもないだろう。
プロセス置換でbashに読み込ませているので、影響範囲は接続中のセッションのみになることから、共有アカウントで利用しても他の利用者には影響が無い(ファイルも吐かないので)。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

This article has 2 comments

  1. Pingback: bashでPROMPT_COMMANDを利用して右プロンプトを出力させる | 俺的備忘録 〜なんかいろいろ〜

  2. Pingback: bashで現在のセッションで読み込まれているfunctionの内容を確認する | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*