Android中/etc/hosts与/system/etc/hosts的区别及内容一致性疑问
Android中/etc/hosts与/system/etc/hosts的差异解析
看起来你已经注意到了Android系统里这两个位置的hosts文件,从内容上看它们确实完全相同,但背后其实藏着一些系统层面的差异,我来给你掰扯清楚:
本质关联:多数情况是同一个文件的不同访问路径
在绝大多数Android设备上,/etc/hosts其实是一个符号链接(symlink),它直接指向/system/etc/hosts。这就好比你给同一个文件建了个快捷方式,所以你查看内容时会看到完全一样的127.0.0.1 localhost——因为你其实在看同一个文件。分区权限与修改限制的核心差异
/system/etc/hosts位于只读的/system分区中,这个分区是系统出厂时固化的部分,普通用户(甚至没有root权限的应用)根本无法修改它。要修改这个文件,必须先获取root权限,再把/system分区重新挂载为可读写模式,操作门槛更高。- 如果你的设备上
/etc/hosts不是符号链接(这种情况很少见,多存在于定制ROM),那它大概率位于可读写的分区(比如/data相关挂载点),修改起来会更方便,而且重启后修改内容更容易保留(不需要动只读的系统分区)。
为什么内容会完全相同?
不管是符号链接的情况,还是物理上的两个文件,内容一致都是系统设计的结果:系统默认会把预置的hosts内容同步到这两个位置,确保应用无论读取哪个路径的hosts文件,都能拿到正确的本地回环地址配置。
总结一下:你当前看到的两个文件内容完全相同是正常的,多数情况下它们本质是同一个文件;如果是物理独立的两个文件,功能上没有差异,但存储分区的权限属性决定了它们的修改难度不同。
内容的提问来源于stack exchange,提问作者atheros
相关产品推荐
相关产品推荐

