まえがき
何をすれば良いのか結果だけ見たい方は一番最後のPATHだけ表示したいよを見ていただければ幸いです。
whichコマンドとは
コマンドのディレクトリがどこにあるのかを知るために使用します。
僕は普段、pythonをメインに使用するので例として下記のようにやると、
$ which pipenv
/usr/local/bin/pipenv
このようになると思います。
ですがpipnevと合わせて使うpyenvでやってみると、
$ which pyenv
pyenv () {
local command
command="${1:-}"
if [ "$#" -gt 0 ]
then
shift
fi
case "$command" in
(rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;;
(*) command pyenv "$command" "$@" ;;
esac
}
おやおや、pipenvのときようにPATHのみが現れませんね。
さらにさらにnodenvにおいてもやってみると、
$ which nodenv
nodenv () {
local command
command="${1:-}"
if [ "$#" -gt 0 ]
then
shift
fi
case "$command" in
(rehash | shell) eval "$(nodenv "sh-$command" "$@")" ;;
(*) command nodenv "$command" "$@" ;;
esac
}
pyenvと同じ感じになりましたね。
whereコマンドとの違い
上記で述べたwhereコマンドと比較してみると、
$ where nodenv
nodenv () {
local command
command="${1:-}"
if [ "$#" -gt 0 ]
then
shift
fi
case "$command" in
(rehash | shell) eval "$(nodenv "sh-$command" "$@")" ;;
(*) command nodenv "$command" "$@" ;;
esac
}
/usr/local/bin/nodenv
おっと、whichコマンドでも見れた部分がありますね。どうやらwhichコマンドはwhereコマンドで表示される最初の部分が表示されるという違いがあるようです。
PATHだけ表示したいよ
毎回whereコマンドで確認するのもいいですが欲しい情報以外も表示されてしまい少しわかりづらくなってしまいます。ここで使うのがtypeコマンドです。
試しにやってみると、
$ type pipenv
pipenv is /usr/local/bin/pipenv
$ type pyenv
pyenv is a shell function from /Users/gabe/.zshrc
pyenv is /usr/local/bin/pyenv
$ type nodenv
nodenv is a shell function from /Users/gabe/.zshrc
nodenv is /usr/local/bin/nodenv
このように表示されます。しかも、ユーザーも設定している場合、それがどこに記載されているかも表示してくれます。
なので、whereコマンドを使用するよりもtypeコマンドを利用した方が都合が良い時が多いかもしれませんね!