Cd 的用法,以及不用 cd 切换目录的方法

cd 这个命令每天都用,在写这篇之前,我都是这样用 cd 的:

cd /path # 前往 /path 这个目录
cd ..    # 到上一级目录
cd -     # 到刚才所在的目录
cd       # 到家($HOME)目录

通过学习 bash 手册: gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins ,我还学到了这样一个用法:
CDPATH 这个环境变量定义了 cd 命令的查找目录,举例:

host:~ # export CDPATH=/usr:/usr/local:/usr/share
host:~ # cd man
/usr/local/man
host:/usr/local/man # cd doc
/usr/share/doc
host:/usr/share/doc #

我去面试的时候,被问到这样一个问题,如何不用 cd 命令切换目录?
请参考 Bash 手册的这一部分: gnu.org/software/bash/manual/bashref.html#The-Directory-Stack
答案是 pushd/popd

# pushd /usr/share/doc
/usr/share/doc ~

将会把 /usr/share/doc 入“目录栈”,并将当前目录切换成栈顶的目录(也就是我们刚才给定的 /usr/share/doc),还会返回当前目录栈的内容。
那 popd 就是从“目录栈”中移除栈顶的目录,并将当前目录切换成新的栈顶目录。
有人问如果目录栈空了会怎样?

# popd
bash: popd: directory stack empty

这个帖子很好呀,提到的两个知识点我都不知道,难道大家都知道啦?!咋就成了骗分贴了?明显比“linux 常用终端命令”这样的帖子技术含量高多了!后者在网上一抓一大把。

不错,又长见识了
我是说目录栈那个~

这么新颖的方法刚知道呢,学习了。