sshでローカルのrcファイルを使って接続させるシェル芸
Pocket

ふと、ローカルにあるbashのrcファイルを、ssh接続先で一時ファイルを作成せずに利用できないかなーと思ったので調べてみた。
で、調べた結果bashには実行時に指定したPATHのrcファイルを読み込むオプション(–rcfile)があるのがわかった。
であれば、ssh接続時にそのコマンドを実行し、さらにローカルファイルの内容をプロセス置換でファイルとして読み込むようにssh越しに渡してやればいけるということになる。

Sponsored Links

ssh -t user@host 'bash --rcfile <(echo "'"$(cat ./path/to/local.rc)"'")' # そのまま渡す場合
ssh -t user@host 'bash --rcfile <(echo -e '$(cat ./path/to/local|base64)'|base64 -d)' # base64で渡す場合

 

これで、共用サーバの共用ユーザでも、一時ファイルを作ったりせずに自分のrcファイルで接続できる。
いちいちコマンド覚えてるのもアレなので、functionなどで定義しておくとよさそうだ。
注意したい点としては、sshでは-tオプションを付けないと仮想端末が払い出されないので忘れないように。

ちなみに、zshの場合だとrcファイルを読み込ませて処理させるのが難しいので、違う方法を取ったほうがいいだろう。
(オプションはある(–rcs)ようなのだが、どうもうまくいかなかった…。まぁ、サーバにzsh入れられるようなとこなら自分用のアカウントとかいろいろ設定しておけるだろうから、わざわざこんなことしなくても良さそう)

 

Pocket

Written by blacknon

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

This article has 1 comments

  1. Pingback: シェル芸で、ローカルにあるbashrcやvimrcをssh接続先で(ファイルをコピーとかせずに)利用する | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

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

*