1Some examples of ready-to-dynamic-load builtins. Most of the 2examples given are reimplementations of standard commands whose 3execution time is dominated by process startup time. The 4exceptions are sleep, which allows you to sleep for fractions 5of a second, finfo, which provides access to the rest of the 6elements of the `stat' structure that `test' doesn't let you 7see, and pushd/popd/dirs, which allows you to compile them out 8of the shell. 9 10All of the new builtins in ksh93 that bash didn't already have 11are included here, as is the ksh `print' builtin. 12 13The configure script in the top-level source directory uses the 14support/shobj-conf script to set the right values in the Makefile, 15so you should not need to change the Makefile. If your system 16is not supported by support/shobj-conf, and it has the necessary 17facilities for building shared objects and support for the 18dlopen/dlsyn/dlclose/dlerror family of functions, please make 19the necessary changes to support/shobj-conf and send the changes 20to bash-maintainers@gnu.org. 21 22Loadable builtins are loaded into a running shell with 23 24 enable -f filename builtin-name 25 26enable uses a simple reference-counting scheme to avoid unloading a 27shared object that implements more than one loadable builtin before 28all loadable builtins implemented in the object are removed. 29 30Many of the details needed by builtin writers are found in hello.c, 31the canonical example. There is no real `builtin writers' programming 32guide'. The file template.c provides a template to use for creating 33new loadable builtins. 34 35basename.c Return non-directory portion of pathname. 36cat.c cat(1) replacement with no options - the way cat was intended. 37cut.c cut(1) replacement. 38dirname.c Return directory portion of pathname. 39finfo.c Print file info. 40getconf.c POSIX.2 getconf utility. 41getconf.h Replacement definitions for ones the system doesn't provide. 42head.c Copy first part of files. 43hello.c Obligatory "Hello World" / sample loadable. 44id.c POSIX.2 user identity. 45ln.c Make links. 46logname.c Print login name of current user. 47Makefile.in Simple makefile for the sample loadable builtins. 48mkdir.c Make directories. 49necho.c echo without options or argument interpretation. 50pathchk.c Check pathnames for validity and portability. 51print.c Loadable ksh-93 style print builtin. 52printenv.c Minimal builtin clone of BSD printenv(1). 53push.c Anyone remember TOPS-20? 54README README 55realpath.c Canonicalize pathnames, resolving symlinks. 56rmdir.c Remove directory. 57sleep.c sleep for fractions of a second. 58strftime.c Loadable builtin interface to strftime(3). 59sync.c Sync the disks by forcing pending filesystem writes to complete. 60tee.c Duplicate standard input. 61template.c Example template for loadable builtin. 62truefalse.c True and false builtins. 63tty.c Return terminal name. 64uname.c Print system information. 65unlink.c Remove a directory entry. 66whoami.c Print out username of current user. 67