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