diff options
Diffstat (limited to 'Etc/FAQ.yo')
-rw-r--r-- | Etc/FAQ.yo | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/Etc/FAQ.yo b/Etc/FAQ.yo index a3dfc6c13..6c46cc09d 100644 --- a/Etc/FAQ.yo +++ b/Etc/FAQ.yo @@ -127,6 +127,7 @@ Chapter 3: How to get various things to work 3.26. Why is my output duplicated with `tt(foo 2>&1 >foo.out | bar)'? 3.27. What are these `^' and `~' pattern characters, anyway? 3.28. How do I edit the input buffer in $EDITOR? +3.29. Why does `which' output for missing commands go to stdout? Chapter 4: The mysteries of completion 4.1. What is completion? @@ -306,7 +307,7 @@ sect(On what machines will it run?) sect(What's the latest version?) - Zsh 5.6.2 is the latest production version. For details of all the + Zsh 5.7 is the latest production version. For details of all the changes, see the NEWS file in the source distribution. A beta of the next version is sometimes available. Development of zsh is @@ -1964,6 +1965,36 @@ label(328) quitting the editor will only return to zsh's command-line editing mode. +sect(Why does `which' output for missing commands go to stdout?) + + The issue is that if you run: + verb( + which non-existent-command + ) + the error message goes, unusually, to standard output rather than + to standard error. Other shells send this message to standard error, + as they would if the command was about to be executed but could not be + found. + + The original reason for this is that this behaviour is inherited from + previous versions of `tt(which)', a builtin in later versions of csh, + the C shell, as well as tcsh, an adaptation of the C Shell with better + editing, and is also available as a separate script sometimes still + found in certain distributions. Other shells had equivalent commands, + `tt(whence)' and `tt(type), that zsh has also adopted. So in fact + this has always been a feature of `tt(which)'. (It would be possible + to change this in emulation modes; however, so far this possibility + has been seen as more of an additional confusion than a help.) + + If you want some further rationalisation, you might note that + `tt(which)' is designed as a way of outputting information about a + command. So `this command can be found in ...' and `this command + can't be found' are both bits of information here, unlike the case + where the command is to be executed. So although it differs from + other Bourne-style shells it is in fact self-consistent. Note that + the exit status does reflect the fact the command can't be found. + + chapter(The mysteries of completion) |