定義済みの関数をリネームする方法はありますか?
command_not_found_handle () {
if [[ "$1" =~ [[:digit:]][d+-] ]]; then
dice "$1"
return $?
elif [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1";
return $?;
else
if [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1";
return $?;
else
printf "%s: command not found\n" "$1" 1>&2;
return 127;
fi;
fi
}
上記のように.bashrcでcommand_not_found_handle()
を再定義して、特徴的な引数なら該当するプログラムに渡すようにしました。
オリジナルの関数をそのままコピーしてきて冒頭に処理を挟み込んだのですが、予めオリジナルの関数をcommand_not_found_handle_orig()
みたいにリネームしておいて最後に呼び出せばよりスマートだと思いました。
command_not_found_handle () {
if [[ "$1" =~ [[:digit:]][d+-] ]]; then
dice "$1"
return $?
else
command_not_found_handle_orig "$1"
fi
}
自前で再定義せずに関数の名前だけ変える方法かtype command_not_found_handle | tail --lines=+3
の出力を利用して関数を再定義する方法はありますでしょうか?