在终端中,引用 home 的一种方法是使用~/
. 我不明白这是如何工作的,因为输出file ~/
是:
/home/admin/: directory
并且只是运行~/
结果:
-bash: /home/admin/: Is a directory
那么转换~/
成/home/admin
什么?
~/
似乎也适用于/bin/dash
,所以我也知道它不是特定于 bash 的。
在终端中,引用 home 的一种方法是使用~/
. 我不明白这是如何工作的,因为输出file ~/
是:
/home/admin/: directory
并且只是运行~/
结果:
-bash: /home/admin/: Is a directory
那么转换~/
成/home/admin
什么?
~/
似乎也适用于/bin/dash
,所以我也知道它不是特定于 bash 的。
这是波浪号扩展。
POSIX需要波浪号扩展(参见第一个链接页面),并且出现在所有现代Bourne 样式的 shell中。这包括流行的 shell
bash
、ksh93
和zsh
,但也包括更简约的 shell ,如mksh
、dash
和busybox ash
。在实践中,不同的 POSIX 兼容 shell 有时在波浪号扩展的精确细节上有所不同,无论是在未指定
HOME
但未设置或为空的情况下,还是允许~
符号用于扩展用户主目录以外的其他目的。例如,波浪号扩展bash
还提供了一种简写方式,用于分别使用和访问PWD
和OLDPWD
变量的值。~-
~+
但是,在典型情况下,它在 Bourne 样式的 shell 中的工作方式大致相同。这些是典型案例(但请注意,这种划分方式不是官方的,只是我呈现材料的方式):
~
或~/
单独扩展到您的主目录。~/
后跟更多路径组件扩展为从您的主目录开始的路径。~username
或~username/
自行扩展至用户名为 的用户的主目录username
。~username/
后跟更多路径组件扩展为从用户名的主目录开始的路径username
。~
是“速记”$HOME
~
是一种“速记”方式来编写$HOME
您的主目录。它在 shell(例如bash
)中工作,被称为“波浪号扩展”。如果您添加尾部斜杠,则意味着您正在谈论一个目录。
例子: