On 9/2/17 2:16 AM, Jason Mielke wrote: > The first line of builtins/mkbuiltins.c gives the comment: > > /* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from > a single source file called builtins.def. */ > > Where is builtins.def?
This is notational and historical, and mkbuiltins does several different things. The first notational part is that builtins are defined in files named x.def, which gets translated into x.c and compiled as usual. The second part is that mkbuiltins creates builtins.c, which declares the array of builtins that is compiled into the shell, and builtext.h, which provides external definitions for the functions implementing each builtin and for the help text associated with them, in the build directory. mkbuiltins can also be invoked to create separate files containing the long documentation for the builtins, but we don't use it for that any more. The other piece is historical. Way back before mkbuiltins was written -- and I'm talking about almost thirty years ago -- all the builtins were defined in a single file. That changed fairly early on, around July 1991 or so (bash-1.10), and mkbuiltins was written to do the translation from the bash-specific .def file format to something the C compiler would like. The first version of mkbuiltins may have been intended -- I don't remember -- to recreate that original builtins.c after we defined the .def file format. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/