use pushd instead of cd, and b_hook support
use cd instead of pushd