Linuxのaliasについて

全てのディストリビューションを調べたわけじゃない(無理)が、 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?

と聞いて来てくれる。こんなときが続けば幸せ。でもそうは行かない。

  1. 後輩(or知合い)に教えているとき
  2. .bashrcを書き換えてエラーが出ていて alias が効いていなかったとき

その他、色々な状況により、aliasが効いていない状態で作業する必要はいく らでも考えられる。そんなとき、

% rm *.c

と打ったら、もうあとは無い(バックアップが重要って話にもなるがそれはま た別の問題)。

「気をつけていれば大丈夫だよ」

と、決まって alias rm している人は言う。人間誰も、慣れたことは反射神 経レベルで操作することがある。そんなときに、「気をつける」が出せる保証が あるんかい。さらに言う。

「じゃあaliasが効いてるかつねに確認する癖をつければ 大丈夫だよ」

ほう。じゃあいちいち、rmを打つ度に

% which rm

とかやって、確認するのけ? それって、aliasの意味あるのか? aliasっての は楽をするために使うもんじゃろ。毎度毎度 alias があるかどうかの確認して たら余計面倒じゃんか。つーか、そんなこと継続できんじゃろ。

そもそも、

という事を考えた場合、

「重い意味を持つコマンドはそのコマンド自身の名前でのaliasを定義してはな らない」

というのが鉄則だ。「武器」という比喩を用いたが、rmコマンドの動作のデ フォルトが「安全装置なし」であることに変わりはないので、やはりその動作を 基本としておくのが良い。いずれにしても、rmでいきなり消えたら可哀相だと言 う「親心」で-iをつけているのだろうが、そんなものをつけてあげてもかならず 「yぽこ病」を患うだけなので、良い結果にはならない。

では、-iがないと不安な人は鍛えるしかないのか。というとそんなことは無 く、たんにalias名をrm以外にすれば良いだけだ。

% alias del='rm -i'

これなら

いずれのときも安心だ。delが嫌いならgomiでも kesuでも何でも良いから、標準でなさそうなみじかい名前にすれば良 い。でもほんとうのところを言うと、aliasでごまかしても「yぽこ」で消しちゃ うもんは消しちゃうので、最初からrmを使って、つねにENTERを打つ前に細心の 注意をしてから

確認なんか要らないゼ!

という悲愴な(嘘)覚悟をもって作業する癖をつけた方が最終的に間違いは起 こさないようになる。

元の話題に戻る。こんな馬鹿aliasを標準設定にしているLinuxって一体…。 少なくとも alias rm='rm -i' している人間は管理者としての仕事を任 せない。



きまぐれ記
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]