理解 bash 中的 tilda,slash 命令

理解 bash 中的 tilda,slash 命令

我对命令的含义感到困惑~/

~/x如果 x 是一个目录,那么bash 中的含义是什么。

请指导我

答案1

Unix shell 通常(bash 也是如此)会将~路径扩展为当前用户主目录。此路径通常也可用作HOME环境变量,因此~$HOME通常是等效的。

因此,当您给出路径时~/x,您是在说“我的主目录的路径,后跟/x”。您也可以这样写$HOME/x,得到相同的结果。

如果您的主目录位于 /home/umar,则此路径将扩展为 /home/umar/x,这是一条有效路径。如果x存在于您的主目录中,则指向的文件或目录也存在且可以使用(假设您具有足够的权限,通常您对主目录中的任何内容都具有这些权限)。

答案2

~是相对于用户的路径,表示登录用户的主目录根目录(或更具体地说,登录用户的环境配置指示的路径)。如果我以用户 Bob 的身份运行标准 Debian 系统,则我的配置文件/主目录默认位于/home/bob。在这种情况下,~将评估为/home/Bob~既是一种方便的快捷方式,也是一种抽象用户配置文件根目录位置的方法,如果它位于文件系统上不可预测的某个位置。

使用 的一个好处~是,您可以编写脚本,让任何用户都以相同的方式执行,无论他们的用户名是什么,也无论他们的个人资料是否存储在默认位置。通过抽象出用户个人资料的实际文件系统路径,脚本可以在以不同方式处理个人资料的系统之间移植,或者允许用户将个人资料移动到非标准位置。

相关内容