Linux cd 命令详解:cd、cd ~、cd /、cd .. 与 cd /home 的区别与避坑指南

发布时间:2026/9/26 18:30:21

Linux cd 命令详解:cd、cd ~、cd /、cd .. 与 cd /home 的区别与避坑指南 1. 别小看这个两字母命令cd 到底在干什么刚接触 Linux 那会儿我觉得cd这命令简单到不值一提——不就是切换目录嘛能有什么花样结果第一次上生产服务器排查问题cd /home和cd ~傻傻分不清切错了目录差点在错误的路径下执行了删除操作。从那以后我才明白越是基础的东西越容易在关键时刻坑人。cd是change directory的缩写属于 shell 的内置命令builtin不是独立的二进制程序。这一点很关键你用type cd查一下会发现它显示的是cd is a shell builtin而不是某个/bin/cd的路径。正因为它是内置的所以它的行为会受当前 shell 环境影响比如CDPATH变量、符号链接的处理方式、以及cd命令本身的别名设置都会让同一个命令在不同环境下表现不一样。这篇文章我打算把cd、cd ~、cd /、cd ..、cd /home这几个最常见也最容易混淆的用法彻底讲透。不管你是刚装好 Linux 虚拟机的新手还是天天泡在服务器上的运维看完之后至少能保证一件事再也不会因为切错目录而手抖。我会从底层原理讲到实操细节再把我这些年踩过的坑和排查技巧一并倒出来你可以直接拿去对照自己的环境验证。2. 五种 cd 写法逐个拆解从原理到实际行为2.1 cd 不带参数回到用户主目录的默认行为很多人以为cd不带参数是什么都不做其实恰恰相反它会把你送到当前用户的主目录home directory。这个行为等价于cd ~也等价于cd $HOME。为什么会有这个设计因为主目录是用户登录后的默认落脚点日常操作里回家是高频动作所以 shell 干脆让cd空参就完成这件事。你可以这样验证# 先随便切到一个目录 cd /tmp pwd # 输出/tmp # 然后不带参数执行 cd cd pwd # 输出/home/你的用户名这里有个细节值得注意cd空参依赖的是HOME环境变量。如果你用sudo或者在某些特殊上下文里执行HOME可能被改成了/root或者干脆为空。我遇到过一种情况在脚本里用sudo -u someuser切换用户后执行cd结果因为HOME没跟着切换直接回到了 root 的家目录后续的文件操作全跑偏了。所以在脚本里永远不要依赖裸cd要写就写cd $HOME或者明确的绝对路径。提示用echo $HOME确认当前 shell 认为你的家在哪尤其是在切换用户、使用 sudo、或者通过某些自动化工具执行命令时这一步能帮你避开大量路径错误。2.2 cd ~波浪号背后的展开机制~这个符号在 shell 里叫tilde expansion波浪号展开它由 shell 在命令执行前就替换掉了cd命令本身根本看不到~。也就是说你敲cd ~shell 先把它变成cd /home/你的用户名然后才交给cd执行。这个展开规则有几个变体很多人只知道第一个写法展开结果说明~$HOME当前用户主目录~username指定用户的主目录比如~root展开为/root~/docs$HOME/docs家目录下的子路径~$PWD当前工作目录~-$OLDPWD上一个工作目录~-这个用法特别实用。比如你在/etc/nginx和/var/log/nginx之间来回切换直接cd ~-就能跳回上一个目录比敲cd -还直观其实cd -也是同样的效果但~-可以嵌在更长的路径里比如cd ~-/conf.d。有个坑我必须提醒~的展开只在 shell 层面生效。如果你把~写在引号里比如cd ~/docsshell 就不会展开它cd会去找一个名字真的叫~的目录结果当然是报错No such file or directory。同理在脚本里用变量拼接路径时也要小心cd $DIR/~这种写法是不会展开的。2.3 cd /根目录不是全部别搞混cd /就是切到文件系统的根目录。这里要澄清一个新手常见的误解根目录/不是所有文件的总和它是整个目录树的起点所有其他路径都是从它往下延伸的。你可以用ls /看看根目录下有什么典型的结构包括/bin、/sbin基础命令/etc配置文件/home普通用户主目录/rootroot 用户主目录/var可变数据比如日志/tmp临时文件/usr用户程序和数据/proc、/sys内核暴露的虚拟文件系统为什么很多人会把cd /和cd ~搞混因为 Windows 里没有根目录和用户目录这种清晰的分层概念C 盘既是系统盘又是用户数据盘。到了 Linux/是系统级起点~是用户级起点两者完全不是一回事。我在带新人的时候最常纠正的就是这个你要找自己的文件去~你要找系统配置去/etc/只是路过的地方别在那待着。还有一个细节普通用户对/通常只有读和执行权限没有写权限。你cd /之后想touch test.txt会直接报Permission denied。这不是 bug是设计如此。2.4 cd ..向上跳一级以及那些容易翻车的边界..代表父目录parent directorycd ..就是往上走一层。这个用法看似简单但边界情况特别多。先看基本行为cd /home/user/docs pwd # /home/user/docs cd .. pwd # /home/user连续向上可以用cd ../..跳两级。但这里有个反直觉的点在根目录执行cd ..不会报错也不会去更上层而是原地不动。因为/的父目录就是它自己。你可以试试cd / cd .. pwd # 还是 /这个特性在脚本里是把双刃剑。好处是循环向上找文件时不会因为到顶而崩掉坏处是如果你写了个while循环靠cd ..往上爬到根目录后会陷入死循环。我见过一个备份脚本就是这么写的跑到根目录后一直空转把 CPU 占满了。另一个坑是符号链接。假设/home/user/link是一个指向/data/project的软链接你cd /home/user/link进去后pwd显示的是/home/user/link逻辑路径但cd ..会把你带到/home/user还是/data答案是取决于 shell 的-P和-L选项默认行为下cd ..走的是逻辑路径回到/home/user。如果你想要物理路径行为得用cd -P ..。这个差异在部署脚本里经常引发文件明明在怎么找不到的诡异问题。注意涉及软链接目录时先用pwd -P看看物理路径到底是什么再决定用cd ..还是cd -P ..能省下大量排查时间。2.5 cd /home绝对路径的确定性优势cd /home用的是绝对路径从根目录开始一路写全。它的最大价值就是确定性——不管你现在在哪执行完一定在/home。对比一下相对路径cd home如果你当前在/它会去/home如果你在/etc它会去找/etc/home大概率报错。所以我在写脚本、写文档、给别人指路的时候一律用绝对路径。相对路径只适合交互式操作里图省事。/home这个目录本身也值得说两句。在大多数发行版里它是所有普通用户主目录的父目录结构通常是/home/用户名/。但注意root 用户的主目录不在/home下而是/root。这是历史遗留设计早期是为了让 root 在/home挂载失败时也能登录。所以cd /home之后你ls是看不到 root 的家目录的。另外有些服务器会把/home单独挂载到一个大容量分区甚至用网络存储。这时候cd /home可能会因为挂载点没就绪而卡住或者进到空目录。判断方法很简单df -h /home mount | grep home如果df显示的是独立设备说明/home是单独挂载的操作前最好确认挂载状态。3. 实操验证把五种写法跑一遍并观察差异3.1 搭建一个干净的验证环境光看理论容易记混我建议你跟着下面这套流程亲手跑一遍。准备一台 Linux 环境虚拟机、云主机、WSL 都行我用的是 Ubuntu 22.04其他发行版行为基本一致。先建一个测试用的目录结构方便观察mkdir -p /tmp/cdtest/a/b/c cd /tmp/cdtest/a/b/c pwd现在你在最深层/tmp/cdtest/a/b/c接下来我们逐个验证。3.2 逐条执行并记录 pwd 输出按顺序执行下面这组命令每条后面跟一个pwd把结果记下来# 测试 1cd .. cd .. pwd # 预期/tmp/cdtest/a/b # 测试 2连续向上 cd ../.. pwd # 预期/tmp # 测试 3cd / cd / pwd # 预期/ # 测试 4cd /home cd /home pwd # 预期/home # 测试 5cd ~ cd ~ pwd # 预期/home/你的用户名 # 测试 6cd 空参 cd /tmp cd pwd # 预期/home/你的用户名跑完这六条你应该能直观感受到cd ..是相对的、依赖当前位置cd /和cd /home是绝对的、结果固定cd ~和裸cd都指向家目录。3.3 用 cd - 和 ~- 提升切换效率再补两个提效技巧。cd -会在当前目录和上一个目录之间来回跳cd /etc cd /var/log cd - pwd # 预期/etc cd - pwd # 预期/var/log这个在改配置—看日志—改配置的循环里特别好用。~-效果一样但能嵌进路径cd /etc/nginx cd /var/log/nginx cd ~-/conf.d pwd # 预期/etc/nginx/conf.d3.4 观察 CDPATH 对 cd 的隐藏影响有个变量叫CDPATH它会改变cd查找相对路径的行为。默认是空的但如果你在.bashrc里设了它cd就会先去CDPATH列出的目录里找export CDPATH/tmp/cdtest cd a pwd # 如果 CDPATH 生效会跳到 /tmp/cdtest/a这个特性在交互式使用里能省事但在脚本里是灾难——因为脚本期望的相对路径行为被悄悄改掉了。所以脚本开头最好unset CDPATH或者用绝对路径。我踩过一次坑本地测试好好的脚本上了服务器就找不到目录查了半天才发现是运维在全局 profile 里设了CDPATH。4. 常见问题与排查技巧实录4.1 报错信息速查表下面这张表是我这些年遇到最多的cd相关报错按出现频率排序报错信息常见原因解决思路No such file or directory路径不存在或~被引号包住没展开用ls确认路径去掉引号Not a directory目标是个文件不是目录ls -l看类型Permission denied没有该目录的执行权限ls -ld看权限位检查 x 位Too many levels of symbolic links软链接成环ls -l追链接用-P绕过cd: OLDPWD not set首次登录就cd -先正常cd一次4.2 权限问题为什么我能看到目录却进不去Linux 目录的权限里执行位 x 决定能不能进入读位 r 决定能不能列出内容。这俩是分开的。所以会出现我能ls看到这个目录名但cd进去就 Permission denied的情况——因为父目录有 r 没 x。# 复现 mkdir /tmp/nox chmod 644 /tmp/nox cd /tmp/nox # 报错Permission denied解决就是给执行位chmod x /tmp/nox。这个知识点在排查服务启动失败、配置文件读不到时特别有用因为很多时候不是文件权限问题而是路径上某一级目录缺 x 位。4.3 软链接目录下的 cd .. 陷阱前面提过这里展开说。假设mkdir -p /data/real ln -s /data/real /tmp/link cd /tmp/link pwd # /tmp/link cd .. pwd # /tmp默认cd ..回到了/tmp而不是/data。如果你期望的是物理路径行为得这样cd -P /tmp/link pwd # /data/real cd .. pwd # /data判断当前 shell 用的是哪种模式看pwd输出和pwd -P是否一致即可。部署脚本里如果涉及软链接目录我强烈建议统一用cd -P避免逻辑路径带来的歧义。4.4 脚本里 cd 失败的静默陷阱这是最阴险的一类问题。看这段脚本cd /nonexistent/path rm -rf *如果cd失败了脚本不会停rm -rf *会在当前目录执行。要是当前目录恰好是/或者某个重要目录后果不堪设想。正确写法是cd /nonexistent/path || exit 1 rm -rf ./*或者更严格set -e cd /nonexistent/path rm -rf ./*set -e让脚本在任何命令失败时立即退出。我现在的习惯是任何脚本开头都写set -euo pipefail这三个选项能挡掉绝大多数静默失败。另外rm -rf *最好写成rm -rf ./*多一个点能避免某些极端情况下*展开异常。提示涉及删除、覆盖的脚本cd后面一定要跟|| exit并且删除目标尽量用绝对路径或先pwd确认。这个习惯帮我躲过了至少两次生产事故。4.5 切换用户后 cd 行为异常用su或sudo -i切换用户时HOME变量的更新时机和方式不一样。su - username带横杠会完整加载目标用户的登录环境HOME正确su username不带横杠则保留原环境HOME可能还是旧用户的。这时候裸cd就会去错地方。排查方法whoami echo $HOME cd pwd三个输出对不上就是环境变量没切干净。解决就是养成用su -或sudo -i的习惯或者在命令里显式指定HOME/home/target。5. 把这些细节变成肌肉记忆5.1 我的日常使用习惯清单用了这么多年我总结出一套自己的cd使用原则分享给你交互式操作优先用cd -和~-提效少敲长路径写脚本一律绝对路径开头set -euo pipefailcd后跟|| exit涉及软链接先pwd -P确认物理路径必要时cd -P切换用户用su -或sudo -i切完先echo $HOME确认删除操作前先pwd再动手rm目标写./前缀这些不是死规矩但每一条背后都有我踩过的坑。你可以根据自己的环境调整核心思路就一个让路径行为可预测。5.2 给新手的三个练习建议如果你刚开始学 Linux我建议这样练第一把/tmp/cdtest那套目录结构建出来把本文所有命令亲手跑一遍别只看。第二故意制造几个错误——比如cd一个不存在的目录、cd一个没权限的目录、在软链接里cd ..观察报错和实际行为。第三写一个五行的脚本故意让cd失败看看不加|| exit会发生什么加深印象。cd这个命令敲一万遍都不嫌多。真正拉开差距的不是你知道它怎么用而是你知道它在什么情况下会不按你想的来。把这五种写法的边界都摸清楚你在 Linux 上的每一步都会走得更稳。
延伸阅读

更多相关文章

2026/9/26 18:30:21

Creo 7.0三维模型转二维工程图全流程实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 18:30:21

ISA-95与IEC/ISO 62264实战指南:打通MES-ERP-设备数据链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 18:30:21

gmusic_大维_G-music_:本地音乐聚合与SQLite全文检索实践

简介:这份资源围绕G-MUSIC算法在大维随机矩阵环境下的仿真研究展开,面向从事阵列信号处理、谱估计与多信号源定位的研究生、科研人员及工程技术人员,帮助其理解G-MUSIC与传统MUSIC在性能上的差异与适用边界。压缩包共21个文件,以9…

2026/9/26 19:35:24

DSH新手必装:8个插件快速上手与避坑指南

1. 为什么我劝新手从这 8 个 DSH 插件开始上手刚接触 DSH(DeepSeek Harness)的朋友,十有八九会卡在同一个地方:装好了本体,打开界面,然后盯着空荡荡的插件列表发呆,不知道下一步该干什么。我当初…

2026/9/26 19:35:24

从零搭建AI摘要邮件服务:大模型驱动的信息聚合实践

1. 从一封每天早上七点准时到达的邮件说起我做了一个叫 HackDigest 的小工具,核心逻辑一句话就能说清楚:每天早上定时抓取一批技术社区和新闻源的内容,用大模型做摘要和去重,把结果整理成一封结构清晰的邮件,发到订阅者…

2026/9/26 19:35:24

AI对话额度消耗过快?提示词长度与迭代方式优化指南

1. 一句十四字提示词,怎么就把半天额度烧没了事情发生在上周三下午。我打开常用的AI对话工具,准备把一份产品需求文档改写成给非技术同事看的说明稿。当时脑子里想的是一个很具体的场景:对方完全不懂技术术语,我需要把“接口鉴权失…

2026/9/26 19:35:24

从AI助手到Agent操作系统:WorkBuddy的工程化实践与落地指南

我最早把 WorkBuddy 当 AI 助手用的时候,它在我眼里就是一个能聊天、能写代码、能整理资料的聊天框;半年后再回头看,我发现它已经变成了我工作环境里最接近“Agent 操作系统”的东西。不是概念包装,而是任务调度、工具调用、上下文…

2026/9/26 19:30:24

老牌安卓模拟器靠谱助手:下载安装教程与现状排查

前段时间有个朋友从网上翻出一个老牌安卓模拟器的安装包,发给我说准备在电脑上跑个旧App,让我先帮他看看这软件还能不能用。说实话,看到“靠谱助手”这个名字的时候我愣了一下——在网易MuMu、雷电模拟器这些后起之秀把市场挤成红海的今天&am…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑