fish にはディレクトリ履歴を辿る方法が用意されている。
実際によく使うのは履歴を戻る Alt+← と、 cdh<Space><Tab> で補完候補から戻り先を選ぶというもの。
補足: pushd について
どのシェルにもあるビルトインコマンドとして pushd, popd があり、履歴を残して cd するコマンドである。 pushd <path/to/dir> で現在のパスがスタックに積まれた上で移動し、 popd でスタックからパスが取り出されてそこに移動する。
zsh では AUTO_PUSHD を設定すると cd した時に自動でパスがスタックに積まれるようになる。