是否有一个可接受的名称来引用主目录 ~/ 路径?
在寻找答案时,我发现了使用各种术语的帖子:
- 〜/语法
- 〜/路径
- 〜/扩展路径
- 〜/符号
但我找不到一致使用且方便的术语来表示 ~/ 语法路径,并且可用于将它们与完整绝对路径或相对路径区分开。
请注意,我知道 ~/ 路径是绝对路径,因为 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 艺术) ~/
,导数与微分)。因为~/ paths
and~/ expanded paths
似乎指的是前者,而~/ syntax
and~/ notation
指的是后者。我可能过于复杂化了,但语言是一个变化无常的东西。例如,~/ paths
强调以 开头的路径形式~/
,同时~/ extended paths
强调正在执行的功能~/
以创建该形式的路径。
不管怎样,现在你可能已经意识到了
没有公认的名字
因为所有这些术语都在流通,而且据我们从当权者那里得知,这个问题还没有得到官方关注。或者换句话说,所有这些术语都是描述同一事物的方式,而不是竞争标签。它们没有正式的名字,但任何懂一点 bash 的人都会立即明白它们的意思——如果人们明白你在说什么,谁在乎你叫它什么?您可以自己决定您喜欢哪个术语。我个人喜欢~/ paths
,发音“波形符斜杠路径”。并参考现象“波形符斜杠路径简写”。说实话,我什至认为他们不需要名字......