使用するコマンドはシェルによって異なります。
ビルトインだけがエイリアス、シェル関数、その他のビルトインなどについて完全に知ることができるため、与えられたコマンド名に対してシェルが何をするかを正しく伝えることができるのはシェルビルトインだけです。注意:そもそもすべてのコマンドが実行可能ファイルに対応しているわけではありません。
-
Bourne Again シェルの場合、
bash、 組み込みはtypeです コマンド:$ type '[' [ is a shell builtin -
魚の殻の場合、
fish、typebuiltin は 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、およびwherewhenceに相当 オプション-vで 、-c、および-ca$ whence ls /bin/ls -
T C シェルの場合、
tcsh、 組み込みはwhichです コマンド — その名前の外部コマンドと混同しないでください:> which ls ls: aliased to ls-F > which \ls /bin/ls
さらに読む
- https://unix.stackexchange.com/questions/85249/
which を使用できます このため:
[email protected]:~$ which ls
/bin/ls
PATH を検索することで機能します 引数の名前に一致する実行可能ファイルの場合。シェル エイリアスでは機能しないことに注意してください:
[email protected]:~$ alias listdir=/bin/ls
[email protected]:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
[email protected]:~$ which listdir
[email protected]:~$
type ただし、機能します:
[email protected]:~$ type listdir
listdir is aliased to `/bin/ls'
which しない (必然的に) 実行可能ファイルを返します。最初に一致したファイル name を返します $PATH (または which -a を使用する場合は複数の同様の名前のファイル) で検索します )... 実際の 実行可能ファイルは、複数のリンクから離れている場合があります。
which locate
/usr/bin/locate
`file $(which locate)
/usr/bin/locate: symbolic link to /etc/alternatives/locate'
実際のを見つけるコマンド 実行可能ファイルは 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