【发布时间】:2013-01-17 15:43:30
【问题描述】:
我需要在我的应用程序中解析$PATH 环境变量。
所以我想知道$PATH 中哪些转义字符是有效的。
我创建了一个名为/bin:d 的测试目录并创建了一个名为
funny 在里面。如果我用绝对路径调用它,它就会运行。
我只是不知道如何在$PATH 中逃脱: 我尝试逃脱
带有\ 的冒号并将其包装成单' 和双" 引号。
但是当我运行which funny 时总是找不到它。
我正在运行 CentOS 6。
【问题讨论】:
-
解决办法:创建符号链接?
-
@KarolyHorvath:是的,或者重命名目录。但我认为 OP 没有使用它,他正在尝试模拟 shell 的算法来解析 PATH 并且只想知道是否有转义规则来自己实现它。
-
向
which发壳? -
您可以使用名称中带有
:的目录来强制人们输入命令的路径名作为完整路径名。这甚至可能是一个合法的策略,以确保敏感命令不会被诱杀(su和sudo突然想到);想要执行它们的用户必须使用cd进行旋转或键入完整路径名,因为目录不能在路径上。 (当然,符号链接可以解决这个问题,所以它不是完美的保护。) -
处理这种情况的合理方法本来可以(如果他们选择这样做...),如果您想要冒号,你给一个双冒号。在
PATH中,/usr/c:将变为/usr/c::。有没有人真正需要一个支持 empty 条目的PATH?
标签: linux path escaping environment-variables