如何在UNIX的$ PATH中转义冒号(:)?
我需要$PATH
在我的应用程序中解析环境变量。所以我想知道在中哪些转义字符有效$PATH
。我创建了一个测试目录,/bin:d
并在其中创建了一个测试脚本
funny
。如果我用绝对路径调用它,它将运行。我只是想不通如何转义:
,$PATH
因为我尝试用冒号转义\
并将其包装为单引号'
和双"
引号。但总是在我运行which
funny时找不到它。我正在运行CentOS 6。
回答:
根据POSIX标准,这是不可能的。这不是特定Shell的功能,PATH处理是在C库的execvp函数内完成的。没有提供任何形式的报价。
这就是为什么强烈建议不要包含某些字符(“便携式文件名字符集”中不包含任何字符-专门以冒号为例)的原因。
从SUSv7:
由于
<colon>
在这种情况下是分隔符,因此可能在PATH中使用的目录名称不应包含<colon>
字符。
另请参阅GLIBC
execvp的来源。我们可以看到它使用strchrnul
和memcpy
函数来处理PATH组件,而绝对没有提供跳过或转义任何类型的转义符的条件。
以上是 如何在UNIX的$ PATH中转义冒号(:)? 的全部内容, 来源链接: utcz.com/qa/412878.html