转义 $PATH 类列表中的目录

转义 $PATH 类列表中的目录

我正在开发 Git 库 LibGit2 的包装器。
但我遇到了一个问题:

许多 GIT 函数接受路径列表 ,即由 LibGit2 向我提供的
一系列由标记分隔的路径组成的字符串。在我的 Linux 中,它是一个冒号 ( )。
:

当我问我时,问题出现了:
如果路径包含这个标记怎么办?

能不能通过某种方式将其转义?\:或者类似方法?
Windows 会立即支持它吗?

:我知道以他的名字命名的目录并不常见
,但作为包装者,我必须为这种情况做好准备。

答案1

我还没检查libgit2,但都不是git也不是各种$PATH用户 – 例如 Glibcexecvpe()函数和各种 shell(短跑狂欢) – 支持任何形式的转义 – 如果目录名称包含:,则它不能用作路径相关环境变量的一部分。

在 Windows 上,路径分隔符是;– 您应该能够使用PATH_SEP或类似的常量来查找值 – 并且再次,任何地方都不支持转义。

如果用户给你一个像这样的路径/usr/foo:bar,那么他们可能会期待它被分成两个目录,所以就这么做吧。

相关内容