首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Quicklisp可用于运行在Shebang上的脚本?

如何使Quicklisp可用于运行在Shebang上的脚本?
EN

Stack Overflow用户
提问于 2022-06-20 22:49:54
回答 2查看 91关注 0票数 0

我最近一直在玩Quicklisp,并且在使用Shebang脚本时遇到了一些小问题。

设置

我做了以下工作:

  1. 使用curl https://beta.quicklisp.org/quicklisp.lisp -o /tmp/quicklisp.lisp下载的quicklisp
  2. 将其与(quicklisp-quickstart:install)一起安装,同时在环境中加载/tmp/quicklisp
  3. 使用(ql:add-to-init-file)将Quicklisp添加到init文件

问题

对于需要Quicklisp (特别是ASDF)的脚本,我可以使用sbcl --load ~/quicklisp/setup.lisp --script start.lisp运行它。但是,当我使用Shebang /usr/bin/env sbcl --script作为独立脚本运行它时,它会失败,因为它不能找到类似UIOP之类的东西,除非我将下面两行放在脚本本身中:

代码语言:javascript
复制
(load "~/quicklisp/setup.lisp")
(ql:quickload "asdf")

你可以找到我愚蠢的实验这里,还有问题中的这里脚本。

PS:任何指针都会非常有用。

PPS:,我相信这对我来说是个愚蠢的错误,原谅我。

EN

回答 2

Stack Overflow用户

发布于 2022-06-21 19:02:46

在这种情况下,你需要:

代码语言:javascript
复制
(require :asdf)

我不知道为什么。--script等于--no-sysinit --no-userinit --disable-debugger --end-toplevel-options,所以我们忽略了很多。(因此加载Quicklisp的setup.lisp似乎也是必需的,因为它不会被您的.sbclrc加载,这就是Quicklisp添加这个小片段的地方)

这是我在其他环境(例如CI )中需要的设置。

票数 1
EN

Stack Overflow用户

发布于 2022-06-21 03:48:28

我将使用roswell --它使使用Common代码的独立脚本可用。

我描述了设置roswell 这里。这太容易了。我描述了在系统范围内安装roswell,或者如何在ubuntu、mac和windows中本地安装roswell。

或者你也可以直接在roswell站点上查找。

使用roswell的优点是可以使用任何roswell-可安装的Common实现,如下所示:

代码语言:javascript
复制
Candidates impls for installation are:
abcl-bin
allegro
ccl-bin
clasp-bin
clasp
clisp
cmu-bin
ecl
mkcl
sbcl-bin
sbcl
sbcl-source

不仅仅是sbcl

roswell允许在用Common编写时直接从shell调用脚本。

从罗斯韦尔$ ros ...命令内部,可以获得quicklisp。所以$ ros install xxx通常使用quicklisp来安装xxx

使用roswell,您可以通过一个命令(包括脚本)从bash调用任何Common程序,这些命令都是用通用lisp编写的。

请看这里:https://roswell.github.io/Roswell-as-a-Scripting-Environment.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72693701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档