Ich habe Folgendes versucht:
%Vor% Das Lisp-Heap-Image konnte nicht von ./args.sh
Ich kann Lispeln direkt ausführen:
%Vor%Ist es möglich, ein Shell-Skript zu schreiben, um Lisp-Code mit Clozure CL auszuführen? Ich bin mir sicher, dass ich etwas Dummes mache.
Ich habe es installiert von: Ссылка
Folgen Sie einfach Charlie Martins Antwort und Ihrer anschließenden Frage. Das dx86cl64 --eval <code>
startet eine REPL. Wenn Sie also ein bestimmtes Skript starten wollen, dann beenden Sie es, fügen Sie es einfach an das Ende Ihres Skripts: (ccl::quit)
. In dem von Ihnen bereitgestellten Beispiel würde dies den Trick bewirken:
Ein schöneres Skript wäre das folgende:
%Vor% Setze das in eine Datei, load-ccl-script.sh
(oder einen anderen Namen deiner Wahl). Dann funktioniert die folgende Interaktion:
Das Problem liegt in Ihrer Shebang-Zeile:
%Vor%In einer UNIX-Datei werden die ersten 16 Bits als "magische Zahl" bezeichnet. Es kommt vor, dass die magische Zahl für ein ausführbares Skript dieselbe Bitkonfiguration wie die Zeichen "#!" Ist. Die ersten 16 Bits Ihrer Datei haben die gleiche Konfiguration wie "\ #", und UNIX wird das nicht kaufen.
Es ist möglich, magische Zahlen hinzuzufügen, aber es ist nicht einfach oder portabel, also brauchen Sie eine Möglichkeit, das Skript aufzurufen. Ich würde vorschlagen,
%Vor% mit geeigneten Argumenten usw. für Ihr Skript. (Der exec
builtin bewirkt, dass der aktuelle Prozess mit der benannten ausführbaren Datei ohne Forking geladen wird, sodass Sie nicht über einen Ersatzprozess verfügen müssen.)
Aktualisieren
In Ihrem speziellen Fall wollen Sie etwas wie
%Vor%Siehe Befehlszeilenargumente für Clozure für warum.
Sie müssen sicherstellen, dass der Kernel ein Lisp Memory Image laden kann. Das Standardverhalten ist, dass der Kernel nach einer Datei sucht, die wie die Kernel-Binärdatei mit angehängtem ".image" benannt ist, dh wenn Sie CCL mit dx86cl64
starten, dann ist das geladene Bild dx86cl64.image
aus demselben Verzeichnis . Sie können dieses Verhalten ändern, indem Sie das Bild explizit mit der Option --image
angeben. Probieren Sie dx86cl64 --help
für weitere Informationen.
Sehen Sie sich das Skript-Unterverzeichnis Ihres ccl-Verzeichnisses an. Es sollte einige Skripte haben, die Sie anpassen und verwenden können.
Tags und Links lisp common-lisp