最小限のFedoraインストールをテストしています。pythonやnodeなどのインタープリターのパスを確認するには、通常を使用しますwhich
。
I通知はwhich
デフォルトではインストールされません。パッケージを追加することはできましたが、この一般的なタスクを実行するために使用できるシェルビルトインがあるのではないかと思います。
私はbash 4.2を使用しています。
which
。「which」を使用しないのはなぜですか?次に何を使用しますか?
最小限のFedoraインストールをテストしています。pythonやnodeなどのインタープリターのパスを確認するには、通常を使用しますwhich
。
I通知はwhich
デフォルトではインストールされません。パッケージを追加することはできましたが、この一般的なタスクを実行するために使用できるシェルビルトインがあるのではないかと思います。
私はbash 4.2を使用しています。
which
。「which」を使用しないのはなぜですか?次に何を使用しますか?
回答:
type
Bashビルトインであるを使用できます。
$ type -P which
which is /usr/bin/which
ドキュメントについては、参照help [t]ype
を指し、type
セクションbash
のmanページを参照してください。
(文字列 "type" で始まる2つのビルトインのhelp type
ヘルプページを印刷します。そのうちの1つは廃止され、これとはまったく関係ありません。)
type -a
自分が好きです。なぜかっこは[t]ype
?
type -a
入力時に実行されるものだけでなく、引数が指すすべてのものを出力します。
which
。「which」を使用しないのはなぜですか?次に何を使用しますか?
type -a
常にそれが実行するものです。私はグレンと同じことをし、常に使用していtype -a
ます。
type -p
コマンドがエイリアスの場合、パスを表示しません。type -P
常にコマンドパスを正しく表示します。おもう。受け入れられた回答をtype -P
@ l0b0
type
またはを使用できますcommand -v
。の出力type
は人間が読める形式です。の出力はcommand -v
Bashで実行できます。
実際には少し異なることに注意してください。type
そしてcommand
、コマンドのハッシュされた値を調べます。つまり、を入力した場合cmd
、type cmd
またはcommand -v cmd
実行される内容を正確に伝えます。また、エイリアス、Bash関数、およびBashビルトインでも機能します(ただし、type -p
これらは無視され、真のファイルのみが返されます)。
which
PATHで検索するだけです。これは、次の理由により異なります。
which
、そのコマンドの実行はハッシュ値を使用します(Bashでハッシュを強制的に更新できますhash -r
)。通常、人々は「インタラクティブな使用でtype
はなく」を本当に望んでいwhich
ます。「実行するときに、このコマンドはどこから来るのか」を見つけるために使用するからです。which
本当にPATHルックアップを行いたい場合にのみ使用してください。
command -v
はと同等ですksh
whence
。
where
、whence
当然にも、とのwho
、why
とwhen
?なぜないのwhat
ですか?
echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what