やってしまいました。
rm ${HOGE}/*
HOGEが未定義のため、ルートディレクトリのファイルが全削除。 幸い、rfオプションは付けていなかったので、消されたのはファイルのみ。
CentOS7において、ルートディレクトリに存在するファイルは以下のシンボリックリンク。
- /bin -> /usr/bin
- /lib -> /usr/lib
- /lib64 -> /usr/lib64
- /sbin/ -> /usr/sbin
組み込み系のコマンドしかまともに動作せず、/usr/bin
フォルダに移動してコマンドを実行しても
-bash: /usr/bin/ln: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter:
となってしまう…
なんとかググって見つけた以下のサイト
[https://ja.stackoverflow.com/questions/24643/rm-f-%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F:embed:cite]
# /usr/lib64/ld-linux-x86-64.so.2 --library-path /usr/lib64 /usr/bin/ln -s /usr/lib64 /lib64
# /usr/bin/ln -s /usr/bin /bin
# ln -s /usr/lib /lib
# ln -s /usr/lib64 /lib64
# ln -s /usr/sbin /sbin
上記コマンドで復旧した。神!! 感謝!!! 死ぬほど焦った…
今覚えば、/usr/bin/busyboxを使えばよかったのかもしれない。
ちなみに、shebangにて
#!/bin/bash -eu
とやっていたのだが、該当ファイルを/bin/bashの引数で呼び出したので効いていなかった…
shebangではなく本文中にset -eu
と書くことが大事だと、死ぬほど理解した.