什么原因导致 Linux 中出现双斜杠?

什么原因导致 Linux 中出现双斜杠?

我正在安装 TCE,并//在安装路径中看到双斜杠 ( )。为什么会出现这些斜杠?

 100% - /usr/local/games/enemy-territory//tcetest/ReadMe.rtf
 100% - /usr/local/games/enemy-territory//tcetest/changelog.rtf
 100% - /usr/local/games/enemy-territory//tcetest/ui.mp.i386.so
 100% - /usr/local/games/enemy-territory//tcetest/qagame.mp.i386.so
 100% - /usr/local/games/enemy-territory//tcetest/pak3.pk3
 100% - /usr/local/games/enemy-territory//tcetest/pak2.pk3

答案1

这种情况经常发生,但无害。双斜线被解释为单斜线。

(查看man path_resolution以了解路径解析过程)

答案2

它只是将路径连接为普通文本字符串的结果。

例如,如果您指定包含结尾斜杠的目标目录...

使 DESTDIR=/usr/local/games/敌人领土/安装

...安装程序像这样使用它:

$(目标目录)/tcetest/pak3.pk3

当上面这一行扩展后,$(DESTDIR)simply 将被替换为变量的确切内容,结果为:

/usr/local/games/敌人领土//tcetest/pak3.pk3

正如 Stéphane 在他的回答中提到的那样,路径中有两个斜杠是完全无害的,这就是为什么大多数安装脚本都不会费心删除它们。

答案3

比如,当一个包含目录/路径名的变量以 / 结尾,然后在其后附加另一个 / 而不检查该变量是否已经以 / 结尾时,就会发生这种情况,例如:

# say pathvariable is "/usr/bin/"
"$pathvariable/apt" # this will result in "/usr/bin//apt"

这完全无害,因为文件/目录名称中的连续 / 在几乎所有 Unix 系统(包括 Linux)上都被视为单个 /。此外,在 99% 的情况下,“directory/”与“directory”相同(末尾没有斜杠)...值得注意的例外是 rsync,它对此非常挑剔 =)

相关内容