[英]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.