TVA与具身智能融合的内在必然性(18)
2026/7/24 21:55:22
Linux 中~/、$HOME的指向,完全由/etc/passwd文件中对应用户的第 6 个字段(家目录配置)决定,而非固定绑定/home目录。只要该字段配置的是任意合法路径(比如/data/user1、/opt/www、/var/lib/mysql),~/就会动态指向这个路径。
~/是用户家目录的快捷符号,会随当前登录用户变化而动态指向不同路径;绝对路径(如/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),所有人进入的都是同一个固定目录。
~/的场景(推荐)~/test.txt比写完整的/home/xxx/test.txt更简洁,且换用户 / 换机器(同 Linux 系统)时,命令无需修改。例:touch ~/demo.sh、cd ~/Downloads~/能让所有用户直接复用,不用每个人替换成自己的用户名。lisi的家目录,不能写~/(会指向自己的),必须写绝对路径/home/lisi;操作系统目录(如/etc、/usr/bin、/var/log)也只能用绝对路径。~/会失效(无法识别指向哪里)。❌ 错误:* * * * * sh ~/script.sh(crontab 中执行会报错)✅ 正确:* * * * * sh /home/zhangsan/script.sh~和~/无本质区别,~/更适合跟子目录 / 文件cd ~=cd ~/=cd $HOME(三者完全等价,均指向当前用户家目录)/:~/file.txt(正确),~file.txt(错误,系统会识别为普通字符串)。~用户名/可快捷指向其他用户的家目录(实用技巧)无需记完整绝对路径,直接用~用户名/即可,例:
cd ~lisi/ # 等价于 cd /home/lisi ls ~root/ # 等价于 ls /root/开头Linux 中路径的判定规则:
/开头 → 绝对路径(从根目录开始);/开头 → 相对路径(相对于当前所在目录,~/是特殊的相对路径快捷符号)。su和su -对~/的影响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/home家目录的场景(~/均有效)www-data(家目录/var/www)、mysql(家目录/var/lib/mysql)、redis(家目录/var/lib/redis);/data、/opt等挂载盘;root:默认家目录/root(本身就不在/home下),~root/或root用户下的~/均指向/root。~/;~/是系统配置家目录的 “全局快捷方式”,和家目录的物理路径(是否在/home下)毫无关系,只要/etc/passwd中配置了合法的家目录,~/就能精准指向。~/是动态的「用户专属快捷路径」,绝对路径是固定的「系统全局唯一路径」。