活在Common Lisp中:把clisp作为login shell

还觉得zsh是终极shell,或者fish是宇宙第一shell? 有胆试试clisp shell吗?

PS 注意安全,做好备份,然后你就可以用lisp替代不够强大的shell脚本语言了。

2 个赞

或许可以搭配Common Lisp版本的Emacs?

真•Emacs操作系统

http://www.scsh.net/

这是另外一个 scheme 的,不过有点落后了。

Step 4: start X 是必须的吗?

好像 shell 脚本也不能运行了。fish 虽然不支持 bash 的语法,但是可以运行脚本。

启动x只是个范例。macOS估计用不着。

当然脚本是可以运行的。

You should be able to run a shell script using the CLISP built-in function ext:shell.

本质上就是开个别的shell来运行脚本,然后可以试着用一个读入宏来简化输入。

然后补全规则,高亮都要自己搞,不过不算难, 体会一下Lisp Machine时代一人一个发行版。

1 个赞

一些有用的东西:

(defun sh (cmd)
    #+clisp
        (let ((str (ext:run-shell-command cmd :output:stream)))
            (loop for line = (read-line str nil)
             until (null line)
             do (print line)))
    #+ecl 
        (si:system cmd)
    #+sbcl 
        (sb-ext:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)
    #+clozure 
        (ccl:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)))
1 个赞

震惊 真的有这样的东西吗?

还不错,就是没有补全,有点蛋疼。

虽然clisp的性能在common lisp实现里面不怎么样,但是在终端用还是很方便的。

然后有人已经做出了个成品。

一个更不错的。能够将shell和lisp混用。已经有点eshell的味道了。

震惊, 是时候将lisp shell作为登陆shell提上日程了

SXEmacs 是一个 XEmacs 的 fork,也就是 GNU/Emacs 的 fork 的 fork。它的主页上居然写着:

SXEmacs is my login shell.

震惊!!!

PS:可惜我在 macOS 上没 build 成功,而且这个开发也不算活跃。


没编译成功的原因大概是 macOS 的图片支持库和其它 *nix 系统不一样。然后 sxemacs 频道已经没人了。这个项目估计已经 dead 了。

cl-launch似乎也可以满足类似的需求。

1 个赞