たとえば、入力としてls
を渡した場合、/bin/ls
は、コマンドラインでls
を実行すると実行されます。
ビルトインだけがエイリアス、シェル関数、その他のビルトインなどについて完全に知ることができるので、シェルビルトインだけが、与えられたコマンド名に対してシェルが何をするかを正しく伝えます。注意:すべてのコマンドが最初から実行可能ファイルに対応しているわけではありません。
Bourne Againシェルの場合、bash
、組み込みはtype
コマンドです。
$ type '['
[ is a Shell builtin
Fish Shellの場合、fish
、type
ビルトインはbashと同様に機能します。実行可能ファイルへのパスのみを取得するには、command -v
を使用します。
$ type cat
cat is /bin/cat
$ command -v cat
/bin/cat
Kornシェルの場合、ksh
、組み込みはwhence
コマンドです。type
は、最初にwhence -v
の通常のエイリアスとして設定され、 command
と同等の-v
オプション付きのwhence
組み込み:
$ whence -v ls
ls is a tracked alias for /bin/ls
Zシェルの場合、zsh
、組み込みはwhence
コマンドで、command
組み込みは-v
オプションと同等ですwhence
および組み込みのtype
、which
、およびwhere
は、whence
と同等で、それぞれオプション-v
、-c
、および-ca
を使用します。
$ whence ls
/bin/ls
T Cシェルの場合、tcsh
、組み込みはwhich
コマンドです。その名前の外部コマンドと混同しないでください。
> which ls
ls: aliased to ls-F
> which \ls
/bin/ls
これにはwhich
を使用できます。
aix@aix:~$ which ls
/bin/ls
PATH
を検索して、引数の名前と一致する実行可能ファイルを探します。はシェルエイリアスでは機能しないことに注意してください。
aix@aix:~$ alias listdir=/bin/ls
aix@aix:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
aix@aix:~$ which listdir
aix@aix:~$
ただし、type
は機能します。
aix@aix:~$ type listdir
listdir is aliased to `/bin/ls'
which
はnotを実行し、(必要に応じて)実行可能ファイルを返します。最初に一致したファイルを返しますname $ PATHで見つかった(または_which -a
_を使用する場合は複数の名前付きファイルなど)... actual実行可能ファイルは複数の場合があります離れてリンクします。
which locate
_/usr/bin/locate
_file $(which locate)
/usr/bin/locate: symbolic link to /etc/alternatives/locate'
_actual実行可能ファイルを見つけるコマンドは_readlink -e
_、
(which
と組み合わせて)
readlink -e $(which locate)
/usr/bin/mlocate
_すべての中間リンクを表示するには:
_f="$(which locate)" # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do # follow links to executable
printf "# %s\n" "$f"
done
# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate
_
あなたが試すことができます:
whereis ls
それは私に与えます:
ls: /bin/ls /usr/share/man/man1/ls.1.gz