繁体   English   中英

如何从eLisp调用env并正确转义目标程序的路径?

[英]How to invoke env from eLisp and escape the path to the target program properly?

我想要做的是如下:

(let ((pj-path (concat src haxe-project-generator)))
        (when (file-exists-p pj-path)
          (shell-command
           (concat "env " (haxe-build-env-vars <more arguments>)
                   (format "'%s'" pj-path)))))

即我想在填充了一些变量的环境中调用程序pj-path

在行(format "'%s'" pj-path)我尝试了单引号和双引号 - 但是env不进行路径扩展,如果引用它,它会将其视为字符串,而不是查找文件。 但是,如果没有引用,那么它将解释字符串的一部分,直到第一个空格作为编程路径。

如果我逃避空间(就像在它们前面用向后的斜线),它似乎工作,但是,当然,白色空格不是唯一会混淆执行命令的shell的字符。

那么,在eLisp中传递应该传递给env的可执行文件名称的正确方法是什么?

尝试shell-quote-argument

(shell-command (concat "ls " 
                       (shell-quote-argument "/path with spaces/(and parens)/")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM