コマンドがあったらalias #2

id:ha-tan:20050329の続き。
sh系のシェルで、コマンドが存在する場合にのみaliasを設定する方法。PATHから検索するようにしてみた。

alias_if_exist()
{
    local realcmd="$3"
    [ X"$realcmd" = X ] && realcmd="$2"

    local p
    for p in `echo $PATH | tr : ' '`; do
        if [ -e "$p/$2" ]; then
            alias "$1"="$realcmd"
            break
        fi
    done
}

上記を.profileなどに追記して、このように使う。

alias_if_exist ls colorls 'colorls -F -G'
alias_if_exist man w3mman