Posted at

sourceコマンドを誤って使ってしまいゾッとした話

注意:絶対にこちらに書いてある内容を実施しないでください。何かあっても一切の責任は負いかねます。

暑いんでゾッとする話をします


事の顛末

.zshrc をちょっといじって、変更をターミナルに反映させるために

source ~/.zshrc

とするところをミスって

source ~/.zsh_history

ってやってしまった。

ぎゃぁぁあああああああーーーーーーーー!!!!!!!!

と叫んでも遅し、、、処理が走ってしまい止められなくなってしまいました。

処理の途中に

.ssh/id_rsa already exists.

Overwrite (y/n)? y 

「公開鍵を上書きするかどうか?」とか出てきて、 n として回避した後、今は無くなっているレポジトリから git clone しようとしたところで、アカウント確認のために処理が止まり、そこで、 Ctrl + c で強制終了できました。


解説

source コマンドは、ファイルに書かれたコマンドを現在のシェルで実行するコマンドです

よって、私がミスして実行してしまった処理の内容は、 .zsh_history にファイルに書かれたコマンドが1行ずつ実行する。という内容になります。

.zsh_history には私が過去に打ったコマンドがすべて記録されているため、つまり、それらのコマンドが順に実行されていくということになってしまいます。

処理の途中で「公開鍵を上書きするかどうか?」を聞かれたのは、過去に公開鍵を作成するコマンドを実行し、それが .zsh_history に記載されていたためです。


対応



  • .zsh_history に記載されているコマンドを上から強制終了できたところまで確認し、そのコマンドが重複実行や再実行した内容を検証しました→特に問題ありませんでした。


  • .zsh_history から、誤って実行した履歴を削除しました。


まとめ

さいわい、1年前に端末を仕立てたときのコマンドが中心だったため、現在や過去の作業に影響はありませんでした。

でも、本番環境へのデプロイ作業もやったことがあるので、.zsh_history には docker のコマンドとか入っていたわけです。これで本番環境にもしものことがあったら。。。ゾッ