Linux中'~'和'/'的区别

10

在Linux环境中,~和/有什么区别?

请问有人能解释一下它们之间的区别吗?

5个回答

16

~ 包含指向当前用户主目录的路径(它会被扩展为 $HOME 环境变量)。如果您运行:

echo ~

它将打印这个路径。斜杠字符 / 在Linux(和其他操作系统)中用作路径分隔符。在Linux中,如果您执行以下操作:

cd /

它将带您进入根目录(文件系统中最顶层的目录)


11

波浪号(~)用来表示用户的主目录,而斜杠(/)用于绝对路径和相对路径中文件系统对象的分隔符。此外,它还用于表示根目录。

另外一点:

~/用于表示开始一个路径,指向用户主目录下的文件或目录。


4
简单的答案是:
/ 是你的根目录
~ 是你的主目录

2

/ 是用于分隔目录的字符。作为路径的第一个字符,它表示根目录。

~ 是一些 shell 中用来展开用户主目录的字符。例如,在 man bash 中查看 "Tilde Expansion":

如果一个单词以未引用的波浪号字符(`~')开头,则在第一个未引用的斜杠之前的所有字符(或者如果没有未引用的斜杠,则为所有字符)都被视为波浪号前缀。如果波浪号前缀中的任何字符都没有被引用,则在波浪号后面的波浪号前缀中的字符将被视为可能的登录名。如果此登录名为空字符串,则使用 shell 参数 HOME 的值替换波浪号。如果 HOME 未设置,则替换为执行 shell 的用户的主目录。否则,波浪号前缀将替换为与指定登录名相关联的主目录。

如果波浪号前缀是 ~+,则 shell 变量 PWD 的值将替换波浪号前缀。如果波浪号前缀是 ~-,则如果设置了 shell 变量 OLDPWD,则将其替换。如果在波浪号后面的字符由数字 N 组成,可选地带有 +- 前缀,则波浪号前缀将替换为与目录堆栈中对应元素相同的元素,就像使用波浪号前缀作为参数调用 dirs 内置函数时显示的那样。如果在波浪号后面的字符由数字组成且没有前导的 +-,则假定为 +

如果登录名无效或波浪号展开失败,则单词不变。

每个变量赋值都会立即检查是否有未引用的波浪号前缀跟着一个 : 或第一个 =。在这些情况下,也会执行波浪号展开。因此,可以在 PATH、MAILPATH 和 CDPATH 的赋值中使用带有波浪号的文件名,shell 将分配扩展后的值。


2

为了测试这个,请输入 cd / 或 cd ~ 然后 pwd,它会显示确切的本地路径


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接