当前位置: 首页 > 面试题库 >

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

平元明
2023-03-14
问题内容

我需要$PATH在我的应用程序中解析环境变量。所以我想知道在中哪些转义字符有效$PATH。我创建了一个测试目录,/bin:d并在其中创建了一个测试脚本
funny。如果我用绝对路径调用它,它将运行。我只是想不通如何转义:$PATH因为我尝试用冒号转义\并将其包装为单引号'和双"引号。但总是在我运行which funny时找不到它。我正在运行CentOS 6。


问题答案:

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

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

从SUSv7:

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

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



 类似资料:
  • 问题内容: 我有一个本机SQL查询,如下所示: 问题是,Hibernate的解释,,作为参数,并希望我们给值,, 但是我不想让Hibernate这样解释,所以我想逃避冒号。 怎么做 ? 问题答案: 在Hibernate中,转义以开头。但是在Java中,您还必须逃脱另一个。因此,所有内容都需要替换为。最后,您得到:

  • 问题内容: 我试图将目录添加到我的路径,以便它始终位于我的Linux路径中。我试过了: 这可行,但是每次我退出终端并启动新的终端实例时,此路径都会丢失,因此我需要再次运行export命令。 我该如何做才能将其永久设置? 问题答案: 有多种方法可以做到这一点。实际解决方案取决于目的。 变量值通常存储在分配列表或在系统或用户会话开始时运行的Shell脚本中。如果使用Shell脚本,则必须使用特定的Sh

  • 在配置文件中,我有一个要分配URL的键。问题是YAML将字符解释为创建映射或列表,因此它的行有问题 (都是因为HTTP后面有冒号,中间有连字符) 有没有一种明确的方法来转义和?还是将整个事情放在单引号中并收工?

  • 问题内容: 我正在尝试下面的代码,但出现错误 错误 我想要结果 问题答案: 请改用,它不使用正则表达式,因为您根本不需要它们: 这将按预期打印。

  • 问题内容: 我坚持这样: 我有一个写在HTML报告。的是 但是该链接不起作用,因为“ Evidencia”未包含在引号中,如何将引号放在参数中? 在带来这二零一三年十月一十日09:15:00.110 问题答案: 您可以使用。在Java中,您可以使用来访问转义字符。

  • 问题内容: 在MySQL文档说,它应该是。但是,scite和mysql都可以正常工作。我看到了,并且有效。我该怎么办? 问题答案: 您引用的MySQL文档实际上比您提到的要多。它还说, A“ ”加引号的字符串内“ ”可以写为“ ”。 (此外,您已链接到表5.0 __的 MySQL 5.0版本。 特殊字符转义序列 ,当前版本是5.6 —但当前的表8.1。 特殊字符转义序列 看起来很相似。) 我认为有