Hello! I would like to anounce my library, guile-bash. With it, you can write your bash functions in Scheme, like this: (use-modules (gnu bash)) (define-bash-function (dtach-start-emacs) (unless (file-exists? "/tmp/emacs.dtach") #$[dtach -n /tmp/emacs.dtach emacs])) This strange #$ is reader macro. To give a try, you should download it from https://github.com/kaction/guile-bash, like this: $ git clone git://github.com/kaction/guile-bash $ cd guile-bash $ autoreconf -if $ ./configure $ make $ make install Make sure, that directory, where Guile modules are installed are in GUILE_LOAD_PATH. Locate libguile-bash.so and do in your bash $ enable -f /path/to/libguile-bash.so scm Now you can copy snippet above to a file and make $ scm /some/file/with/code.scm Now you should have `dtach-start-emacs` function availiable. To get overview of what is availiable, see lisp/gnu/bash.scm Functions defined with `define-ffi` and `define-public` are of interest. About reader macro. To get variable value, write `#$HOME`, to set (set! #$HOME). #$[echo foo] is just eval #$(echo foo) captures output. If you use Debian GNU/Linux, debianization is ready on https://github.com/kaction/deb-guile-bash I am very interested in your opinions. [please keep me in CC] -- Best regards, Dmitry Bogatov , Free Software supporter, esperantisto and netiquette guardian. GPG: 54B7F00D