Mark H Weaver skribis: > ludo@gnu.org (Ludovic Courtès) writes: [...] >> Currently there’s no Bash in the initrd. Should we add one? Our >> ‘bash-static’ package takes 1.4 MiB (I don’t think we can make it >> smaller.) > > I'm not sure it would help much without also adding 'coreutils'. Good point. >> Another idea that comes to mind: what about providing a “shell” language >> in Guile? It would automatically tokenize what the user types in and >> convert it to (system* …), plus it would have a few built-in commands >> like ‘cd’ and ‘ls’. > > I like the idea of having something like this in Guile, but I'm not sure > we should rush to implement a half-baked solution. OTOH, hacking it is very tempting, like: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use (guix build bournish) scheme@(guile-user)> ,bournish Happy hacking with Bournish! To switch back, type `,L scheme'. bournish@(guile-user)> ls . gnu-dist.go r-build-system.go .. gnu-dist.scm r-build-system.scm activation.scm~ gnu-dist.scm~ relocate.scm~ bournish.scm gnu.scm~ rpath.go bournish.scm~ graft.go rpath.scm cmake-build-system.go graft.scm rpath.scm~ cmake-build-system.scm graft.scm~ ruby-build-system.go cvs.go graft.scm.115 ruby-build-system.scm cvs.scm graft.scm.bak ruby-build-system.scm.orig download.go gremlin.go ruby-build-system.scm.rej download.scm gremlin.scm store-copy.go download.scm~ gremlin.scm~ store-copy.scm download.scm.bak haskell-build-system.go store-copy.scm~ emacs-build-system.go haskell-build-system.scm svn.go emacs-build-system.scm http.scm~ svn.scm emacs-utils.go install.scm~ syscalls.go emacs-utils.scm linux-initrd.scm~ syscalls.scm ftp.scm~ perl-build-system.go syscalls.scm~ git.go perl-build-system.scm union.go git.scm perl-build-system.scm~ union.scm git.scm~ profile.go union.scm~ glib-or-gtk-build-system.gprofile.scm~ url.scm~ glib-or-gtk-build-system.sprofiles.go utils.go gnome-build-system.scm profiles.scm utils.scm gnome-build-system.scm~ profiles.scm~ utils.scm~ gnu-build-system.go pull.go vm.scm~ gnu-build-system.scm pull.scm waf-build-system.go gnu-build-system.scm~ pull.scm~ waf-build-system.scm gnu-build-system.scm.bak python-build-system.go gnu-cross-build.scm~ python-build-system.scm bournish@(guile-user)> cd / bournish@(guile-user)> pwd $2 = "/" bournish@(guile-user)> echo $PATH $LANGUAGE $3 = ("/home/ludo/soft/bin:/home/ludo/.opam/system/bin:/home/ludo/.guix-profile/bin:/home/ludo/.guix-profile/sbin:/run/setuid-programs:/run/current-system/profile/bin:/run/current-system/profile/sbin" "eo") bournish@(guile-user)> touch --version touch (GNU coreutils) 8.24 Copyright © 2015 Free Software Foundation, Inc. Ĉi tiu estas libera programaro: vi rajtas ĝin ŝanĝi kaj redistribui. La ĝusta permesilo estas GPLv3+: GNU GPL versio 3 aŭ sekva; por la kompleta (angla) teksto vidu . Ĉi tiu programaro ne garantiatas, ene de la limoj de la leĝo. Verkita de Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie kaj Randy Smith. $4 = 0 bournish@(guile-user)> ,L scheme Happy hacking with Scheme! To switch back, type `,L bournish'. --8<---------------cut here---------------end--------------->8--- :-) The point is, if we can allow users to avoid typing in parentheses and long procedure names and quoted argument lists when all they want is to run fsck, we should do that. > When we have something decent along the lines of Scsh, then > definitely! Scsh makes it super easy to deal with Unix processes, redirections, and all that (it would be awesome to use it on the build side), but AFAIK it doesn’t try to provide a Bourne-like interface, which is what we need here. So, WDYT? :-) Ludo’.