是否有一个可接受的名称来引用 ~/ 路径?

是否有一个可接受的名称来引用 ~/ 路径?

是否有一个可接受的名称来引用主目录 ~/ 路径?

在寻找答案时,我发现了使用各种术语的帖子:

  • 〜/语法
  • 〜/路径
  • 〜/扩展路径
  • 〜/符号

但我找不到一致使用且方便的术语来表示 ~/ 语法路径,并且可用于将它们与完整绝对路径或相对路径区分开。

请注意,我知道 ~/ 路径是绝对路径,因为 shell 扩展了它们 - 这是引用我所追求的它们的便捷方法。

答案1

~/只是几个神奇的“之一”波形符扩展”。波形符扩展与 UNIX shell 特别相关。与$HOME波形符扩展不同的是,波形符扩展并没有被普遍理解,并且可以随 shell 的不同而变化。唯一的共同点是遵守 POSIX 标准(大部分),根据 Wikipedia,POSIX shell 标准是基于 Korn Shell 的“严格子集”,Bourne Shell 的衍生版本,Bourne shell 的后代主要包括 bash 和 zsh。这是 POSIX 关于波浪线扩展的说法

“波形符前缀”由单词开头的未加引号的字符组成,后跟单词中第一个未加引号之前的所有字符,或者如果没有 则为单词中的所有字符。在赋值中(请参阅 XBD 变量赋值),可以使用多个波形符前缀:在单词的开头(即,在赋值的 后面),在任何未加引号的 后面,或两者兼而有之。赋值中的波形符前缀以第一个不带引号的 或 结尾。如果波形符前缀中的任何字符均未加引号,则波形符前缀中跟随的字符将被视为来自用户数据库的可能登录名。可移植登录名不能包含 XBD 其他环境变量中 LOGNAME 环境变量描述中给出的字符集之外的字符。如果登录名为空(即波浪号前缀仅包含波浪号),则波浪号前缀将替换为变量 HOME 的值。如果未设置 HOME,则结果未指定。否则,波形符前缀应替换为与使用 getpwnam() 函数获取的登录名相关联的初始工作目录的路径名,如 POSIX.1-2008 的系统接口卷中所定义。如果系统无法识别登录名,则结果不确定。

由波形符扩展产生的路径名应被视为带引号,以防止它被字段分割和路径名扩展更改。

基本上这意味着~给出 $HOME 和~foo/指向初始工作目录用户 foo.粗略但并不总是指 foo 的主目录。 (我能想到的唯一例外是root)

在 BaSH 中,他们不遵守波浪号扩展的标准有几种方法,没有什么特别重要的。 BaSH 还有其他有趣的波浪线扩展,关联由评论者@phk 提供。你可以把它们全部收集起来!


但我离题了。如果我们谈论 ~/ 的名称,我不确定您是指路径本身(形式 )的术语,还是指用于制作所述路径~/x/y/z的现象(即,艺术品 vs 艺术) ~/,导数与微分)。因为~/ pathsand~/ expanded paths似乎指的是前者,而~/ syntaxand~/ notation指的是后者。我可能过于复杂化了,但语言是一个变化无常的东西。例如,~/ paths强调以 开头的路径形式~/,同时~/ extended paths强调正在执行的功能~/以创建该形式的路径。

不管怎样,现在你可能已经意识到了

没有公认的名字

因为所有这些术语都在流通,而且据我们从当权者那里得知,这个问题还没有得到官方关注。或者换句话说,所有这些术语都是描述同一事物的方式,而不是竞争标签。它们没有正式的名字,但任何懂一点 bash 的人都会立即明白它们的意思——如果人们明白你在说什么,谁在乎你叫它什么?您可以自己决定您喜欢哪个术语。我个人喜欢~/ paths,发音“波形符斜杠路径”。并参考现象“波形符斜杠路径简写”。说实话,我什至认为他们不需要名字......

相关内容