ふと、ローカルにあるbashのrcファイルを、ssh接続先で一時ファイルを作成せずに利用できないかなーと思ったので調べてみた。
で、調べた結果bashには実行時に指定したPATHのrcファイルを読み込むオプション(--rcfile
)があるのがわかった。
であれば、ssh接続時にそのコマンドを実行し、さらにローカルファイルの内容をプロセス置換でファイルとして読み込むようにssh越しに渡してやればいけるということになる。
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入れられるようなとこなら自分用のアカウントとかいろいろ設定しておけるだろうから、わざわざこんなことしなくても良さそう)