bash には pushd というコマンドがあります。
pushd コマンドは cd コマンドと同じように ディレクトリを移動することができます。
cd コマンドとの違いは 移動したディレクトリをディレクトリスタックに 積んで(保存して)くれます。 "push directory" なワケです。
ディレクトリスタックの内容は dirs コマンドで見ることができます。 初期状態では、ホームディレクトリが ディレクトリスタックに積まれています。
~:$ dirs ~
実際に使ってみます。 pushd コマンドは、実行後に現在のディレクトリスタックを 表示してくれます。
~:$ pushd /var /var ~ /var:$ pushd /home /home /var ~ /home:$
ディレクトリスタックから取り出すには popd コマンドを使います。
/home:$ popd /var ~ /var:$
このままでも良いのですが 私は function を使って既存の cd コマンドを 置き換えて使用しています。
function cd { case $1 in "") pushd $HOME > /dev/null ;; "-") [ `dirs | wc -w` -gt 1 ] && popd > /dev/null ;; *) [ -d $1 ] && pushd $1 > /dev/null ;; esac }
引数を指定しなければホームディレクトリに、ディレクトリを 指定した場合は移動してディレクトリスタックに積みます。 ハイフン "-" を指定した場合はディレクトリスタックから取り出します。