Learning the Korn Shell by Bill Rosenblatt Unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. This page was updated July 13, 2001. Here's the key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification UNCONFIRMED errors and comments from readers: [8] At the bottom of Figure 1-2 it points to a file and says "/users/billr/bob/statrpt", but on the next page, in the text where it talks about the file, it uses the name "bob/statreport" The two names of the same file don't correspond. {115} 3 lines below the bottom of Table 4-6; DIRSTACK="" would better be DIRSTACK=$PWD otherwise popd will not take you back all the way the starting directory at the bottom of the stack.... [116] 2; Your definitions of pushd and popd do not match the definitions of those same functions in csh or tcsh. Your definitions of 'pushd' and 'popd' are not nearly as useful as those in the other shells. The essential function of pushd is to push the CURRENT directory onto the stack. Your pushd does not do this (execpt for the first call). Instead your pushd pushes the directory that you are going to onto the stack. I suggest you experiment with the tcsh pushd function some more. You will quickly notice the differences. If you would like, I can supply you with more appropiate pushd/popd ksh functions. Also, just to clarifly, I am referring to your latest, 'corrected' definitions of those functions. {138} The book reads: "The complete script consists of the for loop code and the above function, in either order; good programming style dictates that the function definition should go first." I say that unless the function definition goes first, the script does not work. I have learned that this is a fact when the programming language is a script language and not a compiled language, and I also found when trying that when the function definition went last, the script indeed failed to run because the function was not found... (172) line 18 of printed text: In function popd the assignment line let num={$1#+} should read let num=${1#+} (207) End of first bulleted paragraph: This paragraph ends with the symbol that is used when there is a second footnote on the page (kind of a small cross). The first footnote on a page is signalled by an asterisk and the second footnote on a page is signaled by this character. However, at the bottom of the page, there is no second footnote to reference--only the first footnote. {224} 2/3 of the way down, the line that starts: Similarly, %i- ... should read: Similarly, %- ... {224} 4th paragraph; "The -p option tells jobs to list only process IDS..." technically, it tells jobs to list process groups, doesn't it? perhaps the effect here is the same, but it might be worth pointing out what the -p really stands for. {235} first line of code near top; On p. 25, the author correctly points out that you can't use a backslash to embed a single quote in a single-quoted string. However, he then goes on to do this numerous times starting on p. 235 in defining traps. At least, that's what it looks like. {309} Table of Built-in Shell Variables; *, @, FPATH are omitted. They are described on pages 90-92. {311} Table of Test Operators, -h is omitted. It should be defined the same as -L (file is a symbolic link). {312} Table of Typeset Options, -Z is omitted. It is described on page 178. {Appendix B} It would be really useful to give page references for each entry in the tables. Some have chapter references, but the book does not print the chapter numbers in the page headers or footers. Alternatively, every line item in appendix B should be added to the index. The difficulty in finding the detail of a variable or command is my only complaint.