对于 bash,环境变量的路径分隔符$PATH
是":"
所以出于好奇:
如果有一个名为的目录
$HOME/with:character
有什么办法可以将它添加到搜索路径中?
请注意,我认为添加:
到文件名不是一个非常聪明的主意,但我想知道如果我遇到过这样的目录,是否可以将这样的目录添加到搜索路径中
我尝试使用反斜杠,但这似乎不起作用:
export PATH="$PATH:$HOME/with\\:character"
双:
( ::
) 也不起作用
对于 bash,环境变量的路径分隔符$PATH
是":"
所以出于好奇:
如果有一个名为的目录
$HOME/with:character
有什么办法可以将它添加到搜索路径中?
请注意,我认为添加:
到文件名不是一个非常聪明的主意,但我想知道如果我遇到过这样的目录,是否可以将这样的目录添加到搜索路径中
我尝试使用反斜杠,但这似乎不起作用:
export PATH="$PATH:$HOME/with\\:character"
双:
( ::
) 也不起作用
没有办法逃脱结肠。根据 POSIX 标准,这是不可能的。PATH 处理是
execvp
在 C 库中的函数内完成的,其中没有提供任何类型的引用。这就是为什么 强烈建议不要包含不在可移植文件名字符集中的字符的原因。从SUSv7:
另请参阅GLIBC execvp 的来源。它使用
strchrnul
处理 PATH 组件的函数,没有任何类型的转义。最好的办法是重命名目录。如果它确实需要具有该名称,您可以创建一个符号链接并将其添加到您的
$PATH
: