どのような命令を根絶するのはなぜそれほど難しいのですか? [閉鎖]

どのような命令を根絶するのはなぜそれほど難しいのですか? [閉鎖]

私はこんなところから来た「which」を使わないのはなぜですか?それでは何を使うべきですか?そしてhttps://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-scriptwhich私自身は、よく知られているすべての理由でこれに反対することを長い間提案してきました。しかし、それは難しい戦いのように見えます。

人々にこの命令を放棄させるのはなぜそんなに難しいのですかwhich

最初に反対と懐疑論に直面した他の多くのPOSIXイノベーションは、時間の経過とともに一般的なU * x仕様の一部になりましたが、これは現場での採用が非常に不安定なイノベーションであるようです。

なぜ人々がこの特定のPOSIXの推奨事項を覚えているのが難しいのかを理解したいと思います。 POSIXの立場がまだ不安定なのではないか(まずtype、今command)?それともPOSIX名がcommand覚えたり内部化するのが難しいからですか? (BashがPOSIX以前にも存在していたかどうか疑問に思うかもしれません。多分command意味が少し異なるかもしれません)。which

答え1

command -v直接的な交換ではないからですwhich

https://github.com/koalaman/shellcheck/issues/1162

which

  • フルパスを出力し、
  • シェルの組み込みや機能を無視し、
  • すべて存在する場合にのみtrueを返します。
  • エイリアスの代わりに出力する
  • ダッシュとは異なりtype -p
  • ほとんどのコンピュータは約5種類のBash / Linuxバージョンを使用しているため、互換性のない実装はほとんどありません。

答え2

@user1133275の回答や関連コメントに加えて、使用中かどうかwhichtype常にわかりません。個人的に私の指はそれを使用するように訓練されており、whichコマンド名は覚えやすく直感的であると思います。しかし、実際には以下を使用していますtype

$ which which
$ which type
$ type type
type is a shell builtin
$ type which
which is a function
which () 
{ 
    type -path ${1+"$@"}
}

明日誰かより良いコマンドが出たら、私はそれを変更して.profile私のカスタムコマンドを使い続けますwhich

一言で言えば、名前が機能と密接に関連しているので、根絶が難しいと思います。

関連情報