From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8282 invoked by alias); 2 Sep 2015 14:00:35 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 36401 Received: (qmail 7856 invoked from network); 2 Sep 2015 14:00:34 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,TO_NO_BRKTS_PCNT autolearn=no autolearn_force=no version=3.4.0 Date: Wed, 2 Sep 2015 15:48:25 +0200 From: Vincent Lefevre To: zsh-workers@zsh.org Subject: Re: [patch] "which"-builtin writes diagnostics to stdout Message-ID: <20150902134825.GA11520@ypig.lip.ens-lyon.fr> Mail-Followup-To: zsh-workers@zsh.org References: <20150830030614.GB18893@frozen.localdomain> <20150830052603.GE18893@frozen.localdomain> <150831230431.ZM894@torch.brasslantern.com> <150901161630.ZM2441@torch.brasslantern.com> <20150902095317.60d38ff0@pwslap01u.europe.root.pri> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20150902095317.60d38ff0@pwslap01u.europe.root.pri> X-Mailer-Info: https://www.vinc17.net/mutt/ User-Agent: Mutt/1.5.23-6482-vl-r81226 (2015-08-17) On 2015-09-02 09:53:17 +0100, Peter Stephenson wrote: > On Tue, 1 Sep 2015 16:16:30 -0700 > Bart Schaefer wrote: > > On Sep 1, 8:12am, Mikael Magnusson wrote: > > } > > } I guess the problem here is that in other shells, whence does not > > } exist, and which prints 'not found' to stderr. > > > > As far as I can tell, in other shells "which notacommand" prints NOTHING > > on stdout or stderr. The other shells (bash, dash, ksh93, mksh, posh) do not have a "which" builtin: which -foo gives the following error under GNU/Linux (Debian): Illegal option -f Usage: /usr/bin/which [-a] args and I confirm that "which notacommand" prints nothing. The "which" builtin from BusyBox v1.22.1 behaves in a similar way. Under zsh, one can do alias which="whence -p" and get the same behavior, AFAIK. > Another sidelight on zsh's behaviour illustrating the peculiarity of > this case... > > % which true foo cat > true: shell built-in command > foo not found > /bin/cat > > If "foo not found" went to stderr that would make the output overall a > bit of a mess; it's not clear there's a good argument for complicating > it like that. At least this looks to me like a good argument against > changing it. I agree. And I hardly see how the output from "which" (when it mean "whence -c") can be useful in a script. If the user wants the pathname to some command, he would need "whence -p". -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)