全てのディストリビューションを調べたわけじゃない(無理)が、 Linuxのシェルの初期化ファイルにデフォルトでこんな馬鹿aliasがある。
alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
これは一番やってはいけないaliasの典型だ。
まず第一の問題点。つねに -i がついているとかならず陥るのが
「yぽこ病」
だ。毎度毎度毎度毎度「けしますか<y/n>」と聞かれると、rmを起動す るためにENTERを打ったあとにさらに「y [ENTER]」を打つ癖がつく。最初のうち はほんとうに消していいか頭の中で確認するかもしれないが、人間は慣れる動物 なので、「rm ぽこ y ぽこ」までが一連の動作だと仕込まれる。これを「yぽこ 病」という。この時点で、-i がついていることの意味は消える。それ以前に、 人間工学的に「確認する」という作業は「重要なときだけ」にやるこ とが大切で、つねにやっていたら意味が無くなる。日常生活用語で言えば 「メリハリ」というやつだ。
次の問題点。つねに -i がついていると、複数のファイルを消すときに -i の動作に頼るようになる。たとえば、a.c b.c c.cみっつのファイルが あって、a.c は消したくないとき。とりあえず、こう打つ癖がつく。
% rm *.c
aliasがちゃんと機能している、いつもなら、
remove a.c?
と聞いて来てくれる。こんなときが続けば幸せ。でもそうは行かない。
その他、色々な状況により、aliasが効いていない状態で作業する必要はいく らでも考えられる。そんなとき、
% rm *.c
と打ったら、もうあとは無い(バックアップが重要って話にもなるがそれはま た別の問題)。
「気をつけていれば大丈夫だよ」
と、決まって alias rm している人は言う。人間誰も、慣れたことは反射神 経レベルで操作することがある。そんなときに、「気をつける」が出せる保証が あるんかい。さらに言う。
「じゃあaliasが効いてるかつねに確認する癖をつければ 大丈夫だよ」
ほう。じゃあいちいち、rmを打つ度に
% which rm
とかやって、確認するのけ? それって、aliasの意味あるのか? aliasっての は楽をするために使うもんじゃろ。毎度毎度 alias があるかどうかの確認して たら余計面倒じゃんか。つーか、そんなこと継続できんじゃろ。
そもそも、
rmの動作のデフォルトは「確認なしでファイルを消す」である
「安全装置がついている武器をつねに使っている人が安全装置の無い
ものを使う場合」
と
「安全装置がついていない武器をつねに使っている人が安全装
置のあるものを使う場合」
を考えたとき、前者の方が危ない
という事を考えた場合、
「重い意味を持つコマンドはそのコマンド自身の名前でのaliasを定義してはな らない」
というのが鉄則だ。「武器」という比喩を用いたが、rmコマンドの動作のデ フォルトが「安全装置なし」であることに変わりはないので、やはりその動作を 基本としておくのが良い。いずれにしても、rmでいきなり消えたら可哀相だと言 う「親心」で-iをつけているのだろうが、そんなものをつけてあげてもかならず 「yぽこ病」を患うだけなので、良い結果にはならない。
では、-iがないと不安な人は鍛えるしかないのか。というとそんなことは無 く、たんにalias名をrm以外にすれば良いだけだ。
% alias del='rm -i'
これなら
-iでy/nを聞いて来てくれて安心
bash: del: command not found
と言われるだけで、被害には遭わない。
いずれのときも安心だ。delが嫌いならgomiでも kesuでも何でも良いから、標準でなさそうなみじかい名前にすれば良 い。でもほんとうのところを言うと、aliasでごまかしても「yぽこ」で消しちゃ うもんは消しちゃうので、最初からrmを使って、つねにENTERを打つ前に細心の 注意をしてから
確認なんか要らないゼ!
という悲愴な(嘘)覚悟をもって作業する癖をつけた方が最終的に間違いは起 こさないようになる。
元の話題に戻る。こんな馬鹿aliasを標準設定にしているLinuxって一体…。 少なくとも alias rm='rm -i' している人間は管理者としての仕事を任 せない。