news 2026/9/2 23:38:58

~/ 路径和绝对路径

作者头像

张小明

前端开发工程师

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/9/3 0:18:54

C++中的函数式编程

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

作者头像 李华
网站建设 2026/9/3 0:18:31

泛型编程与STL设计思想

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

作者头像 李华
网站建设 2026/9/2 5:26:58

使用Black自动格式化你的Python代码

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

作者头像 李华
网站建设 2026/9/2 22:33:03

python安卓客户端室内定位APP_jrate小程序

目录室内定位技术概述Python在安卓端的实现方案关键代码示例(Kivy蓝牙信标)注意事项开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!室内定位技术概述 室内定位技术通…

作者头像 李华
网站建设 2026/9/3 3:17:06

AI元人文构想:证成

AI元人文构想:证成摘要AI元人文构想的理论证成,并非完成了一座封闭的思想大厦,而是完成了从“认知纠缠”的现象描述到“价值解缠”的实践导航的完整闭环。其证成的核心标志在于:它成功地将东方“空性”哲学与前沿技术政治分析熔铸…

作者头像 李华