误输入cd //替代cd ..出现异常,非存在目录//的原因解析
为啥输入
cd //没报错,还进到了奇怪的地方? 哈哈,这个小坑我之前也踩过!当时手滑多打了个斜杠,还纳闷“这路径根本不存在啊怎么没报错”,后来查了才知道这是shell路径解析的常规操作~
核心原因:连续斜杠会被压缩成单个斜杠
在类Unix系统(比如Linux、macOS)里,主流shell(像bash、zsh)都遵循POSIX标准的路径解析规则:路径中连续的多个斜杠/,会被等价成单个斜杠。
所以你输入cd //的时候,shell其实自动把它转换成了cd /——也就是直接切换到根目录。不信的话,切换完之后输入pwd看看,输出肯定是/,而不是//。
为啥会有这个设计?
这其实是历史遗留的兼容行为:早期Unix的一些远程文件系统(比如旧版NFS)会用多斜杠来标识远程服务器路径,后来这个解析规则被保留下来,成为了POSIX标准的一部分,确保不同场景下路径解析的一致性。
再验证一下
你可以试试这些命令,效果全都是一样的:
cd /cd //cd ///cd ////
不管打多少个开头的斜杠,最终都会进到根目录。
内容的提问来源于stack exchange,提问作者Parto
相关产品推荐
相关产品推荐

