Bash loadable modules
Or how to create new builtins for use in bash
. Short answer: you can,
but it is not enabled by default (at least on my distribution, Ubuntu)
This is also something that is done much better in zsh
.
Why do want this? SPEED!
Shell scripting is a very easy way to program, but forking all these helper programs takes a lot of time. So one way to speed up your shell program is to load these programs into the shell and making them a builtin.
bash⌗
I needed the bash source for this to work. So download it and
compile it. Then in the examples/loadables
you have some
new builtins, like cat
, cut
, head
and then some.
Making cat
a builtin, you need the enable
command
$ type cat
cat is /bin/cat
$ enable -f /tmp/bash-3.2/examples/loadables/cat cat
$ cat type
cat is a shell builtin
Same goes for other executables. When updating my site with
nanoblogger
, using cat
and others as builtins made the
update much quicker. I shaved off some 20 seconds on a total
of 250 seconds; so it may be worth the effort.
zsh
Here everything worked out of the box, but there is currently
no cat
builtin for zsh (I created one). But there are
other interesting builtins.
What you need: man zshmodules
and zmodload
. With zmodload
you can create new builtins.
For example, I made a cat
builtin. Next I copy the cat.so
to
/usr/lib/zsh/4.3.4/zsh
% type cat
cat is /bin/cat
% zmodload zsh/cat
% type cat
cat is a shell builtin
Unload with zmodload -u
. Works like a charm.