cd - 是linux中直接返回上一次工作目录的最简方式,依赖shell维护的$oldpwd变量,可在两目录间来回切换,与cd..(仅上一级)有本质区别。

用 cd - 直接返回上一次目录
Linux 下最直接的方式就是执行 cd -,它会立即跳转回上一个工作目录,并在终端输出该路径。这个操作不依赖历史记录命令(如 history),也不需要记住路径,本质是 Shell 维护的 $OLDPWD 环境变量在起作用。
cd - 的行为细节和常见误解
它不是“后退一步”,而是严格切换到 $OLDPWD 所记录的上一个目录 —— 每次成功执行 cd 后,Shell 都会把旧路径存进 $OLDPWD,新路径赋给 $PWD。所以:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 连续执行两次
cd -会在两个目录间来回跳转 - 如果中间执行过
pushd/popd或子 shell,$OLDPWD不受影响,仍指向上一次cd前的位置 - 手动修改
$OLDPWD(比如OLDPWD=/tmp)会导致cd -跳去错误位置,但一般没必要也不建议这么干
为什么不用 cd .. 或其他方式替代
cd .. 是向上一级目录移动,和“上一次所在目录”完全不是一回事。容易混淆的典型场景:
- 从
/home/user/project执行cd /etc,再想回去 ——cd ..会到/,而cd -才回到/home/user/project - 在脚本里用
cd -要小心:非交互式 Shell 可能未初始化$OLDPWD,首次运行会报错cd: OLDPWD not set -
cd ~或cd回家目录,和cd -无关,别混用
配合 pwd 和 dirs 确认当前状态
执行 cd - 前后,可以用 pwd 看当前路径,用 echo $OLDPWD 查看下一次 cd - 会跳去哪。如果需要管理多个目录,dirs -v 能显示目录栈,但日常快速切换,cd - 就够了 —— 它简单、可靠,且所有主流 Shell(bash、zsh、dash)都支持。










