LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: d00m3d

关於 .. 的疑问

[复制链接]
发表于 2009-12-24 20:28:35 | 显示全部楼层
Post by 飞龙在天;2058970
这是根据对dos文件系统的理解而作的推测。ext文件文件我没做过仔细研究,应该都是差不多的原理。因为硬盘的柱面、磁头、扇区决定了不可能有太多的差异。


从文件系统角度看,硬盘物理结构是无关的,再说使用的块设备也不一定是硬盘,极端点,甚至可以不使用块设备,如 ramfs、tmpfs。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-24 21:19:16 | 显示全部楼层
Post by 聚焦深空;2058975
以前从来没注意过这个问题,幸亏从来没有这么使用相对路径和软连接,又多一个规则。

查了查 man bash, help set, help cd, echo $-。
bash 默认内嵌命令 cd 会跟随软连接,可以使用 cd -P 或 set -P 强制 cd 使用物理目录结构。

查询 inode 可以使用 ls -i 或 stat。

可是系统本身已自带不少此类软连接,/usr/lib 及 /lib 下多不胜数,混乱得很,当然这只是举例,不可能蠢到往乱这些地方乱动,但明显该问题本身在系统里就一直隐藏着而矣
回复 支持 反对

使用道具 举报

发表于 2009-12-24 22:03:22 | 显示全部楼层
指向文件的软连接,只会出现在路径末尾,无歧义,是安全的,如 /usr/lib /lib 下的例子。
指向目录的软连接,有可能出现在路径开头与中间,使用绝对路径 并且 无 "../" 出现时无歧义,也是安全的。

指向目录的软连接,只记得经常对其下的子目录或文件有处理,像首贴中例子没遇到过。
幸亏歧义只对包含 ".." 的路径有影响。

如果 /etc/profile 中添加 set -P,可以把歧义问题控制在最小范围。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-24 22:21:46 | 显示全部楼层
嘿嘿,完全明白。

其实我发现这个问题也是很偶然的,实际是我在别的目录下发生,但跟顶帖举例的现像是一样的。

以往我惯常把某些分区下的目录用 symlink 来操作,以後也要小心为上了。
回复 支持 反对

使用道具 举报

发表于 2009-12-24 23:25:01 | 显示全部楼层
一个不包含符号链接的路径相当于常量,符号链接相当于变量,符号链接的指向表明了变量和常量的函数关系,符号链接可以继续链接符号链接,相当于变量可以复合函数,整个文件系统就是常量和变量组成的多元方程式。

当每一个符号链接都能用物理路径表示时,说明方程式有解,此时文件系统是健康的,当某一个符号链接不能表示时,说明方程误解,此时系统认为这个符号链接是损坏的,损坏的文件链接不能读取,损坏的目录链接不能进入。

当 shell 进行相对定位时,如果源路径和目标路径包含符号链接,相当于未知表达式,需要通过文件系统求出真实解,然后在此基础上进行相对定位。用户如果直接操作包含符号链接的路径有可能出错,那就在维护工作开始前执行一次 cd -P ./ ,解出当前路径的真实值,之后的操作都是安全的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表