コマンドの詳細を出力する
source addwhich.sh commandname
引数に指定されたコマンドが、エイリアス、キーワード、関数、組み込みコマンド、ファイル
のどれにあたるか出力する。
pasteコマンドは複数のファイルを同じ行ごとに結合するコマンド、2つのtypeコマンドを結合する。
()はプロセス置き換えで、()内のコマンドの結果がファイルとして実行される。
#!/usr/bin/bash alltypelists=`mktemp alltypelists.XXXXXXXXXXXX` paste <(type -ta $1) <(type -a $1) > $alltypelists 2> /dev/null if ! [ -s $alltypelists ]; then echo "$1 No Match" else IFS_DEF=$IFS IFS=" " for typelist in `cat $alltypelists`; do typename=`echo $typelist | cut -f1` case $typename in alias) echo "$1 is alias" alias $1;; keyword) echo "$1 is keyword";; function) echo "$1 is function" typeset -f $1;; builtin) echo "$1 is builtin command";; file) filename=`expr $typelist : '.* \(.*\)$'` if [ -e $filename ]; then echo "$1 is $filename" fi ;; esac done IFS=$IFS_DEF fi rm -f $alltypelists