揮発性のメモ2

http://d.hatena.ne.jp/iww/

bashで、そのコマンドがあるかどうかチェックする

コマンドhogeが、実行できるかどうかをチェックする
つまり、実行ファイルか エイリアスか 関数か を判定する

hogeが実行ファイルかどうかを判定する

$ which hoge
/usr/local/bin/hoge

whichコマンドでチェックする。 成功すれば、何が実行されるかパスを表示する。

hogeエイリアスかどうかを判定する

$ alias hoge
alias hoge='/usr/bin/piyo'

aliasコマンドでチェックする。 成功すれば、エイリアスの定義を表示する。

hogeが関数かどうかを判定する

$ declare -f hoge
hoge ()
{
    echo this is function
    /usr/bin/piyo
}

declareコマンドでチェックする。 成功すれば、関数の定義を表示する。*1

hogeが実行ファイル、エイリアス、関数のいずれかかどうかを判定する

$ type -t hoge
function

typeコマンドでチェックする。 成功すれば、実行ファイルならfileエイリアスならalias、関数ならfunctionと表示する。
実行ファイルはパスを辿ってくれるのでフルパスで記述する必要はない

コマンドが実行される優先順位は エイリアスが一番高く、ファイルが一番低い





*1:-fの代わりに-Fを使えば関数本体部分は表示しない