「which」のないパスでファイルを見つけますか?


12

私は(何らかの形で)スクリプトを実行できます:

$ 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. このファイルの場所を見つけるにはどうすればよいですか?

私はbashを使用しています。


であるassemble.shあなたの現在のディレクトリにありますか?
キース

3
おそらく愚かな質問ですが、それはエイリアスalias ですか(つまり、コマンドを入力するとassemble.shが表示されます か?
ジェームズマクラウド

@JamesMcLeod素晴らしい推測!acme.sh(github.com/Neilpang/acme.sh)の私の場合でした。インストール後、acme.shエイリアスが作成され、PATH変数にないにもかかわらずacme.shがどのように呼び出されるのか疑問に思いました。
rlib

回答:


17

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

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


9
または、単にtype assemble.sh移植可能です(最初の一致のみを表示しますが、type -aすべての一致を表示するksh / bashコンストラクトです)。
ジル 'SO-悪であるのをやめる'

6

または、パスを分割し、検索で使用します-最初の一致が解決策である必要があります

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

type もちろんもっと簡単です。


2
これはかなり便利です。$ PATHをサブコンポーネントに分割し、それぞれを検索できるとは知りませんでしたfind
-Ehtesh Choudhury

1
試しませんでしたが、これはPATHのコンポーネントのスペースで壊れる可能性があると思います
-nhed

4

bashを使用している可能性がありますが、which出力の構文は、whichcshで書かれた古いものを使用していることを示しています。PATHが括弧で囲まれて表示され、PATH内のディレクトリには、Solarisでのみ意味のある/opt/SUNWspro/binおよびなどのエントリがあります/usr/ccs/bin。それは一貫しています:Solarisはcshを使用しましたwhich

私の推測は次のとおりです。bashのPATHとcshのPATHがあります。これはシステムの問題である可能性があります。私が思い出すように、Solarisはシステム全体のPATH設定のために/ etc / profileおよび/ etc / cshrcファイルを保持します。これらの2つの初期化ファイルは、シェルごとに異なるPATH変数を設定する場合があります。bashで「echo $ PATH」を実行し、whichコマンドがPATH文字列として出力する内容と一致するかどうかを確認します。


4
command -v assemble.sh

情報

-v組み込みコマンド「type」に類似したCOMMANDの説明を出力します

また、PATHの修正バージョンで検索したい場合にも役立ちますASSEMBLE=$(PATH=/usr/bin:/usr/local/opt/coreutils/libexec/gnubin command -v assemble.sh)
-nhed

0

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


いいえ、これには、名前にが含まれるすべての(世界で読み取り可能な)ファイルの場所が表示されますがassemble.sh、ここでは関係ありません。
ジル 'SO-悪であるのをやめる'

それはまったく無関係ではありません。そのような名前のファイルが複数ある場合でも、必要なファイルlocateの場所がわかります。assemble.shはそのような一般的なファイル名ではないので、彼はおそらくファイルを簡単に見つけるでしょう(OPが要求するものです)。
ニコ

1
結果を表示するupdatedb前にする必要はありませんlocateか?
グレンジャックマン

1
通常updatedb、cronジョブとして毎日実行されますが、ファイルが非常に新しい場合は強制的に実行する必要がある場合があります。
ニコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.