将路径中每次出现的(可能重叠的)“/./”替换为“/”是否“安全”?

Fra*_*ona 7 shell path

在符合 POSIX 标准的系统中,是否出现(可能重叠)/./已被替换的路径/保证通向与原始路径相同的目标?

例子:

#!/bin/bash

shopt -s extglob

some_command -- "${@//\/+(.\/)//}"
Run Code Online (Sandbox Code Playgroud)

更新:

鉴于评论,它不等同,所以我将更新问题:

在符合 POSIX 标准的系统中,是否出现的路径(可能重叠)/././已被替换为/./保证导致与原始路径相同的目标?

Fra*_*ona 4

在POSIX 2018 的路径名解析slash中,描述了以两个字符开头的路径的特殊情况:

如果路径名以两个连续slash字符开头,则前导字符后面的第一个组成部分slash可以以实现定义的方式进行解释,尽管两个以上前导slash字符应被视为单个slash字符。

.然后,在路径中定义a :

特殊文件名dot应引用其前身指定的目录。

您可以得出结论,在 POSIX 兼容系统中,应该可以将路径中所有出现的重叠替换/./为单个重叠,但以第一个无法替换的开头的重叠除外///.//./

/././此外,在这些系统上,用单个替换重叠/./应该毫无例外。