パスに「which」がないファイルを探しますか?

パスに「which」がないファイルを探しますか?

(とにかく)スクリプトを実行できます。

$ assemble.sh file
... [output]

しかし、which見つかりません:

$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
  1. どうやってこれができますか?
  2. このファイルがどこにあるのか、どうすればわかりますか?

バッシュを使っています。

答え1

次のコマンドを使用します。 type assemble.sh

さまざまなシェルで動作し、最初の結果のみを表示します。

答え2

または、パスを分割して検索に使用します。最初の一致は解決策でなければなりません。

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit

typeもちろん簡単です。

答え3

Bashを使用している可能性がありますが、構文出力は以前のcsh作成構文をwhich使用していることを示しています。whichPATHは括弧内に表示され、PATHのディレクトリにはSolarisでのみ意味があるもの/opt/SUNWspro/binと同じ項目があります。/usr/ccs/binこれは一貫性があります。 Solarisはcshを使用しますwhich

私の考えでは、bashへのパスが1つあり、cshへのパスが異なることです。これはシステムの問題かもしれません。私が覚えているように、Solarisはシステム全体のPATH設定のために/etc/profileと/etc/cshrcファイルを維持しています。 2つの初期化ファイルは、異なるシェルに対して異なるPATH変数を設定できます。 bashで "echo $ PATH"を実行して、whichコマンドで印刷されたPATH文字列と一致することを確認してください。

答え4

locate assemble.shを使用してファイルの場所を見つけることができます。

関連情報