NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/56491: /bin/sh hash command "hash foobar" says foobar not found, and exit(1)

The following reply was made to PR bin/56491; it has been noted by GNATS.

From: Robert Elz <kre%munnari.OZ.AU@localhost>
Subject: Re: bin/56491: /bin/sh hash command "hash foobar" says foobar not found, and exit(1)
Date: Sun, 14 Nov 2021 08:41:20 +0700

 For this (see the original PR for the details) I am considering having
 the best of all worlds (since it is so simple - the change is truly trivial).
 That is, make the default be like bash/dash/ ... (everything
 not a ksh variant) which makes "hash foobar" generate an error
 just like now, but will exit 1 instead of 0 if any command to
 be added to the hash table is not found.   That takes adding
 one test to see if the command was found, and making the return
 value be a variable rather than const 0.
 Then add a -e option (no errors) to make it work the ksh way,
 which means suppressing the error message (one arg to the lookup
 routine changes value), and continue to exit(0).
 And since all this is so easy, add a -q (quiet) option which will
 suppress the "not found" error message, but still result in an
 exit(1) in the case that a command named was not found.  This is
 similar to hash command 2>/dev/null except that any other errors would
 still appear on stderr, only the "command not found" would be skipped.
 Then, just because it is so simple, make -e invert the sense of
 whatever -q gets set to, then use just -q to decide whether to suppress
 the error message internally (and -e just for the exit status).
 This makes hash -e do what we want (-q is implicitly set to suppress
 the error), and hash -eq return to what NetBSD "hash" command has been
 doing forever (generate the not found error message (as -q gets inverted
 by -e), but exit(0)).   I don't see this being very useful, but it does
 provide a backwards compat variant, and is cost free.
 The most difficult part of all of this is the man page update - and not to
 document these new options, but, to document the other options that the
 hash command has had for quite a while now, but never got documented.
 Any comments before I commit this?

Home | Main Index | Thread Index | Old Index