標準コマンドにエイリアスを使用することをお勧めしないのはなぜですか?

標準コマンドにエイリアスを使用することをお勧めしないのはなぜですか?

たとえば、~/.bashrcファイル(またはそれに対応する項目)で見た一般的なエイリアスは次のとおりです。

alias rm='rm -i'

しかし、私は人々がこれを拒否するのを見ました。

  1. 他のシステムにはエイリアスがない可能性があり、注意していないため、誤ってrm重要な項目を削除しました。[1]
  2. このエイリアスを使用すると、本質的にすべてのコマンドの後にorを入力するように自分自身を訓練します。yこれは全体的な目的を無効にします。yesrm

これに反対する他の理由はありますか?一部のプログラムがrm呼び出すのではなく、単に呼び出して\rmエイリアスを使用すると問題が発生する可能性がありますか?

私はrmこれを単に例として使用していますが、別名cpmv別名で覆われたコマンドなどの他のコマンドも見たことがあります。個人的には、次のエイリアスを使用するようにゆっくりと訓練していますrm -i

alias trash=`mv -v -t $HOME/.Trash`

ベストアンサー1

bashを使用すると仮定すると、非対話型bashシェルはorを取得できないため、スクリプトに問題はあり~/.bashrcません~/.bash_profile。スクリプト)。ただし、スクリプトをソーシングすると問題が発生する可能性があります。

$ alias echo='command echo foo'
$ cat > script << 'EOF'
> #!/bin/bash
> echo bar
> EOF
$ chmod a+x script
$ ./script
bar
$ . ./script
foo bar

あなたの質問は、既存のコマンドのエイリアシングに関する一般的な問題のほとんどをカバーしています。主な問題は、一見同じように見慣れない状況が大きく異なる結果を生み出す可能性があることです。たとえば、エイリアスrmtoはrm -i良い意図を持っていますが、実際にはあなたが言及した理由のために悪いです。

おすすめ記事