使用するコマンドはシェルによって異なります。
ビルトインだけがエイリアス、シェル関数、その他のビルトインなどについて完全に知ることができるため、与えられたコマンド名に対してシェルが何をするかを正しく伝えることができるのはシェルビルトインだけです。注意:そもそもすべてのコマンドが実行可能ファイルに対応しているわけではありません。
-
Bourne Again シェルの場合、
bash
、 組み込みはtype
です コマンド:$ type '[' [ is a shell builtin
-
魚の殻の場合、
fish
、type
builtin は 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
さらに読む
- 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