LoginSignup
1
1

More than 1 year has passed since last update.

whichコマンドで見たいものが見れない時は...!!

Posted at

まえがき

何をすれば良いのか結果だけ見たい方は一番最後の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コマンドを利用した方が都合が良い時が多いかもしれませんね!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1