概要
間違って実行して痛い目見たので、まとめ。
サーバーの設定によるコマンド実行の差分
サーバーのエイリアスの設定によっては複数サーバーのコマンド実行を行う場合は、独自のコマンドを使われてしまう可能性がある。(というか実際あって、障害を起こしかけた・・・)
例
リリースしたいコマンド
# 元からあるsampleディレクトリのの名前を変えて、
# sample2ディレクトリからsampleディレクトリにシンボリックリンクを貼りたい
mv ~/sample ~/stash_sample;ln -nfs ~/sample ~/sample2
ssh先の.bashrc
alias mv=mv -i
これによって確認が入ることになるが、確認のレスポンスをすることはリリースするコマンドの考慮入っていないため、最後までコマンドが実行されずに終わってしまう。さらに「;」が使われていることで、lnコマンドが実行される。(-nfsのオプションを使っていたことからもっとおかしなことになる)
このようなことを起こさないためには、エイリアスを適用しないようにする工夫が必要。
バックスラッシュが救世主
バックスラッシュ をつけるとどうやらエイリアスを無視して標準のコマンドを実行するらしい。
今回リリースしたかったコマンドを実際に利用する場合は、以下のように実行すればよかった。
本来リリースすべきだったコマンド
\mv ~/sample ~/stash_sample;\ln -nfs ~/sample ~/sample2