我正在l3build
测试和安装我自己开发的软件包。它看起来非常有用。今天,当我将一个包放入名称中有空格的目录中时,我遇到了麻烦。
我将所有源代码控制的软件包保存在 GitHub 上的存储库中,并将它们签出到本地计算机的目录中~/github
。如果我将 的名称更改~/github
为~/git hub
,安装脚本将不再起作用:
$ cd ~/git\ hub/mypkg
$ l3build install --dry-run
sh: line 0: export: `hub/mypkg/build/local:': not a valid identifier
sh: /Users/matthew/git: No such file or directory
我对 lua 了解不够多,无法准确找到此错误的原因。但我可以看到,这是由带有空格的路径被视为两个独立路径而导致的。
显而易见的解决方法是不要这样做,我愿意更改我的设置以保证目录名称中没有空格。但我宁愿不这样做——有问题的目录是与其他人共享的 Dropbox 文件夹,如果我更改文件夹的名称,他们可能也需要更改一些内容。另外,我是 Mac 用户,我认为文件夹名称中包含空格是很常见的做法。所以如果l3build
可以解决这个问题就太好了。
答案1
更新答案
感谢您的报告。我相信这个问题现在应该在开发版本中得到修复,并将于今天安排 CTAN 版本发布。
原始答案
虽然内部空间没有特殊处理l3build
,但有些地方会返回绝对路径。正如您所观察到的,这些可能最终包含空格,并且目前没有对此类空格进行引用/转义。这里讨论的那个相对容易追踪,但可能还有(很多)其他的(最明显的是,用户可以将各种相对目录设置为任何内容)。我记录了一个https://github.com/latex3/l3build/issues/76:我怀疑完整的修复需要一些工作。