summaryrefslogtreecommitdiff
path: root/Etc/FAQ.yo
diff options
context:
space:
mode:
Diffstat (limited to 'Etc/FAQ.yo')
-rw-r--r--Etc/FAQ.yo33
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)