| 1 | Some examples of ready-to-dynamic-load builtins. Most of the
|
|---|
| 2 | examples given are reimplementations of standard commands whose
|
|---|
| 3 | execution time is dominated by process startup time. The
|
|---|
| 4 | exceptions are sleep, which allows you to sleep for fractions
|
|---|
| 5 | of a second, finfo, which provides access to the rest of the
|
|---|
| 6 | elements of the `stat' structure that `test' doesn't let you
|
|---|
| 7 | see, and pushd/popd/dirs, which allows you to compile them out
|
|---|
| 8 | of the shell.
|
|---|
| 9 |
|
|---|
| 10 | All of the new builtins in ksh93 that bash didn't already have
|
|---|
| 11 | are included here, as is the ksh `print' builtin.
|
|---|
| 12 |
|
|---|
| 13 | The configure script in the top-level source directory uses the
|
|---|
| 14 | support/shobj-conf script to set the right values in the Makefile,
|
|---|
| 15 | so you should not need to change the Makefile. If your system
|
|---|
| 16 | is not supported by support/shobj-conf, and it has the necessary
|
|---|
| 17 | facilities for building shared objects and support for the
|
|---|
| 18 | dlopen/dlsyn/dlclose/dlerror family of functions, please make
|
|---|
| 19 | the necessary changes to support/shobj-conf and send the changes
|
|---|
| 20 | to bash-maintainers@gnu.org.
|
|---|
| 21 |
|
|---|
| 22 | Loadable builtins are loaded into a running shell with
|
|---|
| 23 |
|
|---|
| 24 | enable -f filename builtin-name
|
|---|
| 25 |
|
|---|
| 26 | enable uses a simple reference-counting scheme to avoid unloading a
|
|---|
| 27 | shared object that implements more than one loadable builtin before
|
|---|
| 28 | all loadable builtins implemented in the object are removed.
|
|---|
| 29 |
|
|---|
| 30 | Many of the details needed by builtin writers are found in hello.c,
|
|---|
| 31 | the canonical example. There is no real `builtin writers' programming
|
|---|
| 32 | guide'. The file template.c provides a template to use for creating
|
|---|
| 33 | new loadable builtins.
|
|---|