根据POSIX标准,这是不可能的。这不是特定Shell的功能,PATH处理是在C库的execvp函数内完成的。没有提供任何形式的报价。
这就是为什么强烈建议不要包含某些字符(“便携式文件名字符集”中不包含任何字符-专门以冒号为例)的原因。
从SUSv7:
由于
<colon>在这种情况下是分隔符,因此可能在PATH中使用的目录名称不应包含<colon>字符。
另请参阅GLIBC
execvp的来源。我们可以看到它使用
strchrnul和
memcpy函数来处理PATH组件,而绝对没有提供跳过或转义任何类型的转义符的条件。



