news 2026/4/17 7:45:13

~/ 路径和绝对路径

作者头像

张小明

前端开发工程师

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/4/16 10:06:05

用Pandas处理时间序列数据(Time Series)

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

作者头像 李华
网站建设 2026/4/16 9:48:23

PCIe-FC Information Tracked by Transmitter

从SoC PCIe控制器硬件设计的角度,发送端流控门控逻辑(Flow Control Gate)必须维护的两个核心硬件计数器:CREDITS_CONSUMED和 CREDIT_LIMIT。这两个计数器是确保不向接收方发送超出其处理能力的数据、防止缓冲区溢出的硬件安全机制。 一、CREDITS_CONSUMED计数器:已消耗信…

作者头像 李华
网站建设 2026/4/17 0:00:18

【计算机毕业设计案例】基于springboot的高校院系学生信息管理系统基于java+springboot+vue+mysql的高校院系学生信息管理系统 (程序+文档+讲解+定制)

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

作者头像 李华
网站建设 2026/4/17 16:00:37

基于java的在线教育系统毕业论文+PPT(附源代码+演示视频)

文章目录 一、项目简介1.1 运行视频1.2 🚀 项目技术栈1.3 ✅ 环境要求说明1.4 包含的文件列表 前台运行截图后台运行截图项目部署源码下载 一、项目简介 项目基于SpringBoot框架,前后端分离架构,后端为SpringBoot前端Vue。随着信息技术的飞速…

作者头像 李华
网站建设 2026/4/17 16:08:31

掌握这73个Windows 11键盘快捷键成为高手

Windows 11已经正式到来。随着Windows 10支持的正式结束,许多用户开始下载并熟悉Windows 11。虽然这个新操作系统有很多需要适应的地方,但学习能让生活更轻松的键盘快捷键是最好的选择之一。 你可能已经熟悉了一些基本快捷键,比如CtrlC复制和…

作者头像 李华
网站建设 2026/4/17 9:02:58

序员必看!大模型高薪岗位揭秘:收藏这篇文章,年薪百万不是梦

锐仕方达发布132个高薪岗位,多个大模型相关职位年薪达40-220万,遍布北京、上海、杭州等城市。岗位包括大模型研发经理、算法工程师、技术专家等,覆盖互联网、人工智能、航空航天等行业。数据显示大模型领域人才需求旺盛,薪资明显高…

作者头像 李华