3

重複の可能性:
POSIX システムにコマンドが存在する
かどうかを確認する bash で使用可能な実行可能ファイルを見つける方法

コマンド ラインで (eg) type vimdiff(またはマシンで使用できないwhich vimdiff場合) と入力します。typeしかし、スクリプトでは、ユーティリティをチェックし、その可用性に応じて何らかのアクションを実行するための最も信頼できる方法は何ですか?

当面の目的は、関数を作成することですthediff。これは、さまざまなオペレーティング システムとさまざまな種類の OS のローカルおよびリモート マシンにインストールでき、使用可能な場合は引数を p4merge に渡すことができます。 (OS X および Windows/Cygwin 環境の場合)、そうでない場合は、それが利用可能な場合はそれを使用してみてvimdiffください。diff--side-by-side --suppress-common-lines --ignore-space-change

whichはフィードバックの形式が信頼できないことで知られているため、問題のユーティリティがインストールされていない場合に信頼できるかどうかはわかりません$?1しかし一方で、typeインストールされていることにまったく頼ることができるかどうかはわかりません。

面倒に思えますが、最初のユーティリティを試してみて、 が$?ゼロでない場合は次のユーティリティを試してみてください。

これは一般的にどのように扱われますか?

更新

これに「bash」というタグを付けましたが、これは bash タグをフォローしている人々の注意を引くためだけでした。彼らは答えを知っている可能性が高いからです。私がこれまで bash しか使用していなかったとか、私が使用するすべてのシステムに bash が存在すると仮定できると暗示するつもりはありませんでした。実際、気難しいシステム管理者が Korn シェル以外を使用するのを難しくしているシステムで作業しなければなりませんでした。そして (利用可能な場合はいつでも) bash の代わりに zsh を使用します。したがって、これはbashが必要なため、bashで使用可能な実行可能ファイルを見つける方法の正確な複製ではありません。したがって、質問は異なります。さらに、利用できないシステムを使用する必要があることを明示的に述べました。すべてのクローザーは明らかにその事実を見落としていました。type

私が言及したすべてのシステムが実際にPOSIXに準拠している場合、この質問は正当に他の質問と重複している可能性があります。かどうかはわかりません。

4

0 に答える 0