news 2026/7/1 21:09:26

~/ 路径和绝对路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
~/ 路径和绝对路径

核心原理

Linux 中~/$HOME的指向,完全由/etc/passwd文件中对应用户的第 6 个字段(家目录配置)决定,而非固定绑定/home目录。只要该字段配置的是任意合法路径(比如/data/user1/opt/www/var/lib/mysql),~/就会动态指向这个路径。

核心区别:动态指代vs固定唯一

~/用户家目录的快捷符号会随当前登录用户变化而动态指向不同路径绝对路径(如/home/zhangsan/root)是从系统根目录/开始的完整路径指向唯一、固定的位置,不随用户变化

简单说:~/是「懒人快捷方式」,绝对路径是「精准门牌号」。


一、直观对比(不同用户登录时)

登录用户~/实际指向的路径(绝对路径)直接写绝对路径
普通用户zhangsan/home/zhangsan/home/zhangsan
普通用户lisi/home/lisi/home/lisi
超级用户root/root(root 家目录特殊,不在 /home)/root
系统用户www-data/var/www(自定义家目录)/var/www

关键:同一台机器,不同用户敲cd ~/,进入的是各自的家目录;但敲同一个绝对路径(如/home/zhangsan),所有人进入的都是同一个固定目录


二、使用场景差异(核心实用点)

✅ 用~/的场景(推荐)

  1. 操作「自己的家目录」:比如新建文件、存放个人脚本,~/test.txt比写完整的/home/xxx/test.txt更简洁,且换用户 / 换机器(同 Linux 系统)时,命令无需修改。例:touch ~/demo.shcd ~/Downloads
  2. 编写通用脚本 / 命令:比如给团队写操作手册,用~/能让所有用户直接复用,不用每个人替换成自己的用户名。

✅ 用绝对路径的场景(必须 / 推荐)

  1. 操作「其他用户的目录 / 系统公共目录」:比如访问lisi的家目录,不能写~/(会指向自己的),必须写绝对路径/home/lisi;操作系统目录(如/etc/usr/bin/var/log)也只能用绝对路径。
  2. 编写系统脚本 / 服务配置:比如定时任务(crontab)、后台服务(systemd),必须用绝对路径—— 因为这类脚本执行时「无当前登录用户」,~/会失效(无法识别指向哪里)。❌ 错误:* * * * * sh ~/script.sh(crontab 中执行会报错)✅ 正确:* * * * * sh /home/zhangsan/script.sh
  3. 明确指定唯一位置:避免路径歧义,比如机器上有同名目录时,绝对路径能精准定位。

三、补充知识点(避坑 + 拓展)

1.~~/无本质区别,~/更适合跟子目录 / 文件

  • cd ~=cd ~/=cd $HOME(三者完全等价,均指向当前用户家目录)
  • 写文件 / 子目录时,必须加/~/file.txt(正确),~file.txt(错误,系统会识别为普通字符串)。

2.~用户名/可快捷指向其他用户的家目录(实用技巧)

无需记完整绝对路径,直接用~用户名/即可,例:

cd ~lisi/ # 等价于 cd /home/lisi ls ~root/ # 等价于 ls /root

3. 绝对路径的核心特征:/开头

Linux 中路径的判定规则:

  • /开头 → 绝对路径(从根目录开始);
  • 不以/开头 → 相对路径(相对于当前所在目录,~/特殊的相对路径快捷符号)。

4. 特殊情况:susu -~/的影响

  • su 用户名切换用户但不切换环境~/仍指向原用户的家目录;
  • su - 用户名切换用户并加载其完整环境(推荐用法),~/指向新用户的家目录。
# 示例:当前是root用户 su zhangsan # 切换到zhangsan,echo ~ 输出 /root(原用户家目录) su - zhangsan # 切换到zhangsan并加载环境,echo ~ 输出 /home/zhangsan
  • 切换用户时需加-:只有su - 用户名(加载用户完整环境),~/才会切换为目标用户的家目录;如果直接su 用户名(不切换环境),~/仍指向原用户的家目录(和家目录是否在/home无关)。
  • ~用户名/同样适用:指向其他用户的家目录时,无论对方家目录在哪,~用户名/都能直接匹配,无需记完整路径
ls ~www-data/ # 直接指向/var/www,等价于ls /var/www cd ~mysql/ # 直接指向/var/lib/mysql,等价于cd /var/lib/mysql

5. 常见非/home家目录的场景(~/均有效)

  • 系统用户:www-data(家目录/var/www)、mysql(家目录/var/lib/mysql)、redis(家目录/var/lib/redis);
  • 自定义普通用户:为了数据分区隔离,将用户家目录放在/data/opt等挂载盘;
  • 超级用户root:默认家目录/root(本身就不在/home下),~root/root用户下的~/均指向/root

四、一句话总结

  • 想操作自己的家目录,追求简洁 → 用~/
  • 想操作别人的 / 系统的目录,或编写系统脚本 / 配置→ 用绝对路径
  • ~/系统配置家目录的 “全局快捷方式”,和家目录的物理路径(是否在/home下)毫无关系,只要/etc/passwd中配置了合法的家目录,~/就能精准指向。
  • ~/是动态的「用户专属快捷路径」,绝对路径是固定的「系统全局唯一路径」。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 23:14:58

自定义分配器实战

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第一个满…

作者头像 李华
网站建设 2026/6/29 5:15:57

谷歌联合打击全球最大住宅代理网络IPIDEA

谷歌周三宣布,其与合作伙伴联手成功打击了IPIDEA——这个被描述为世界上最大的住宅代理网络之一的组织。 为此,谷歌表示采取了法律行动,关闭了数十个用于控制设备和通过这些设备代理流量的域名。截至发稿时,IPIDEA的官方网站&…

作者头像 李华
网站建设 2026/6/29 5:28:44

为啥大厂 FPS 进对局不立刻清空局外缓存,而是打完再清?(大白话超长版)

玩 FPS 你肯定见过这种流程: 你在大厅里:看商城、换枪皮、调灵敏度、看好友在线 点“开始匹配” 进加载界面 进对局:打得热火朝天 打完结算:经验+1、段位涨、任务完成、掉落发放 回大厅:又能立刻点下一把、又能立刻看战绩、聊天也还在 很多人做框架时会冒出一个“很合理但…

作者头像 李华
网站建设 2026/6/30 1:07:42

【课程设计/毕业设计】基于微信小程序的医院设备管理及报修系统基于springboot的医院设备管理及报修小程序的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/22 12:16:47

Java毕设项目推荐-基于springboot+vue智慧旅游服务平台网站系统基于springboot的智慧旅游系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华