如何在UNIX的$ PATH中转义冒号(:)?

我需要$PATH在我的应用程序中解析环境变量。所以我想知道在中哪些转义字符有效$PATH。我创建了一个测试目录,/bin:d并在其中创建了一个测试脚本

funny。如果我用绝对路径调用它,它将运行。我只是想不通如何转义:$PATH因为我尝试用冒号转义\并将其包装为单引号'和双"引号。但总是在我运行which

funny时找不到它。我正在运行CentOS 6。

回答:

根据POSIX标准,这是不可能的。这不是特定Shell的功能,PATH处理是在C库的execvp函数内完成的。没有提供任何形式的报价。

这就是为什么强烈建议不要包含某些字符(“便携式文件名字符集”中不包含任何字符-专门以冒号为例)的原因。

从SUSv7:

由于<colon>在这种情况下是分隔符,因此可能在PATH中使用的目录名称不应包含<colon>字符。

另请参阅GLIBC

execvp的来源。我们可以看到它使用strchrnulmemcpy函数来处理PATH组件,而绝对没有提供跳过或转义任何类型的转义符的条件。

以上是 如何在UNIX的$ PATH中转义冒号(:)? 的全部内容, 来源链接: utcz.com/qa/412878.html

回到顶部