diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-09 01:15:23 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 2000-02-09 01:15:23 +0000 |
commit | 6845f57d4cf6cb45a04fa8e10cfdb3ad7d30f3c4 (patch) | |
tree | 7368f9a7d6624760fe7fd0d0f3dcd88c5191238e | |
parent | deac7dec248d92a1ff93406464988d85c9be39fd (diff) | |
download | zsh-6845f57d4cf6cb45a04fa8e10cfdb3ad7d30f3c4.tar.gz zsh-6845f57d4cf6cb45a04fa8e10cfdb3ad7d30f3c4.tar.xz zsh-6845f57d4cf6cb45a04fa8e10cfdb3ad7d30f3c4.zip |
zsh-workers/9625
-rw-r--r-- | Doc/Zsh/options.yo | 29 | ||||
-rw-r--r-- | Doc/Zsh/redirect.yo | 37 | ||||
-rw-r--r-- | Src/exec.c | 7 | ||||
-rw-r--r-- | Src/options.c | 2 | ||||
-rw-r--r-- | Src/zsh.h | 2 |
5 files changed, 40 insertions, 37 deletions
diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo index 536853ad4..e319919eb 100644 --- a/Doc/Zsh/options.yo +++ b/Doc/Zsh/options.yo @@ -305,6 +305,16 @@ In double-quoted strings, it is made impossible to escape `tt($)', `tt(`)' or `tt(")' (and `tt(\)' itself no longer needs escaping). Command substitutions are only expanded once, and cannot be nested. ) +pindex(CSH_NULLCMD) +vindex(NULLCMD, ignoring) +vindex(READNULLCMD, ignoring) +cindex(redirections with no command, csh) +cindex(csh, redirections with no command) +item(tt(IGNORE_NULLCMD) <C>)( +Do not use the values of tt(NULLCMD) and tt(READNULLCMD) +when running redirections with no command. This make +such redirections fail (see noderef(Redirection)). +) pindex(CSH_NULL_GLOB) cindex(csh, null globbing style) cindex(null globbing style, csh) @@ -533,13 +543,6 @@ of tt(exit) or tt(logout) instead. However, ten consecutive EOFs will cause the shell to exit anyway, to avoid the shell hanging if its tty goes away. ) -pindex(IGNORE_NULLCMD) -vindex(NULLCMD, ignoring) -vindex(READNULLCMD, ignoring) -item(tt(IGNORE_NULLCMD) <C> <K> <S>)( -The values of tt(NULLCMD) and tt(READNULLCMD) are not used when running -redirections with no commands (see noderef(Redirection)). -) pindex(INC_APPEND_HISTORY) cindex(history, incremental appending to a file) item(tt(INC_APPEND_HISTORY))( @@ -983,15 +986,19 @@ Note that setting or unsetting this option on the command line does not necessarily affect the state the option will have while the shell is running - that is purely an indicator of whether on not commands are em(actually) being read from standard input. -The value of this option cannot be changed anywhere other than the command line. +The value of this option cannot be changed anywhere other +than the command line. ) pindex(SH_NULLCMD) +vindex(NULLCMD, ignoring) +vindex(READNULLCMD, ignoring) cindex(sh, redirections with no command) cindex(ksh, redirections with no command) +cindex(redirections with no command, sh) +cindex(redirections with no command, ksh) item(tt(SH_NULLCMD) <K> <S>)( -If the variable tt(NULLCMD) is unset or if the option tt(IGNORE_NULLCMD) -is set, this option make redirections with no command have the -standard Bourn shell behaviour (see noderef(Redirection)). +Do not use the values of tt(NULLCMD) and tt(READNULLCMD) +when doing redirections, use `tt(:)' instead (see noderef(Redirection)). ) pindex(SH_OPTION_LETTERS) cindex(sh, single letter options style) diff --git a/Doc/Zsh/redirect.yo b/Doc/Zsh/redirect.yo index bbf8386fe..9bafe4650 100644 --- a/Doc/Zsh/redirect.yo +++ b/Doc/Zsh/redirect.yo @@ -200,29 +200,26 @@ vindex(NULLCMD, use of) vindex(READNULLCMD, use of) pindex(IGNORE_NULLCMD, use of) pindex(SH_NULLCMD, use of) -If a simple command consists of one or more redirection operators -and zero or more parameter assignments, but no command name, and the -parameter tt(NULLCMD) is not set, an error is caused. If the parameter -tt(NULLCMD) is set, its value will be inserted as a command with the -given redirections. If both tt(NULLCMD) and tt(READNULLCMD) are set, then -the value of the latter will be used instead of that of the former when the -redirection is an input. The default for tt(NULLCMD) is `tt(cat)' and for -tt(READNULLCMD) is `tt(more)'. Thus +When a simple command consists of one or more redirection operators +and zero or more parameter assignments, but no command name, zsh can +behave in several ways. + +If the parameter tt(NULLCMD) is not set or the option tt(CSH_NULLCMD) is +set, an error is caused. This is the bf(csh) behavior and tt(CSH_NULLCMD) +is set by default when emulating bf(csh). + +If the option (SH_NULLCMD) is set, the builtin tt(`:') is inserted as a +command with the given redirections. This is the default when emulating +bf(sh) or bf(ksh). + +Otherwise, if the parameter tt(NULLCMD) is set, its value will be used as a +command with the given redirections. If both tt(NULLCMD) and +tt(READNULLCMD) are set, then the value of the latter will be used instead +of that of the former when the redirection is an input. The default for +tt(NULLCMD) is `tt(cat)' and for tt(READNULLCMD) is `tt(more)'. Thus example(< file) shows the contents of tt(file) on standard output, with paging if that is a terminal. tt(NULLCMD) and tt(READNULLCMD) may refer to shell functions. -The above default behaviour can be affected by the options -tt(IGNORE_NULLCMD) and tt(SH_NULLCMD). tt(SH_NULLCMD) forces the Bourne -shell behaviour when the parameter tt(NULLCMD) is not set (i.e. the -implicit command used with the redirections is `tt(:)'), while -tt(IGNORE_NULLCMD) is used to obtain the same behaviour as if tt(NULLCMD) -was unset. - -The standard Bourne shell behaviour is obtained by setting the options -tt(IGNORE_NULLCMD) and tt(SH_NULLCMD). This is the default when zsh is -emulating bf(sh) or bf(ksh). The tt(csh) behaviour can be obtained by -setting only tt(IGNORE_NULLCMD), which is the default when emulating -bf(csh). diff --git a/Src/exec.c b/Src/exec.c index 7b45a1ba2..7ea1147b6 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -1661,13 +1661,12 @@ execcmd(Estate state, int input, int output, int how, int last1) } else if (varspc) { nullexec = 2; break; - } else if (((!nullcmd || !*nullcmd || opts[IGNORENULLCMD]) - && !opts[SHNULLCMD]) - ||(cflags & BINF_PREFIX)) { + } else if (!nullcmd || !*nullcmd || opts[CSHNULLCMD] || + (cflags & BINF_PREFIX)) { zerr("redirection with no command", NULL, 0); errflag = lastval = 1; return; - } else if (!nullcmd || !*nullcmd || opts[IGNORENULLCMD]) { + } else if (!nullcmd || !*nullcmd || opts[SHNULLCMD]) { if (!args) args = newlinklist(); addlinknode(args, dupstring(":")); diff --git a/Src/options.c b/Src/options.c index 3d657edcb..3e130a63e 100644 --- a/Src/options.c +++ b/Src/options.c @@ -102,6 +102,7 @@ static struct optname optns[] = { {NULL, "cshjunkiehistory", OPT_EMULATE|OPT_CSH, CSHJUNKIEHISTORY}, {NULL, "cshjunkieloops", OPT_EMULATE|OPT_CSH, CSHJUNKIELOOPS}, {NULL, "cshjunkiequotes", OPT_EMULATE|OPT_CSH, CSHJUNKIEQUOTES}, +{NULL, "cshnullcmd", OPT_EMULATE|OPT_CSH, CSHNULLCMD}, {NULL, "cshnullglob", OPT_EMULATE|OPT_CSH, CSHNULLGLOB}, {NULL, "equals", OPT_EMULATE|OPT_ZSH, EQUALS}, {NULL, "errexit", OPT_EMULATE, ERREXIT}, @@ -134,7 +135,6 @@ static struct optname optns[] = { {NULL, "hup", OPT_EMULATE|OPT_ZSH, HUP}, {NULL, "ignorebraces", OPT_EMULATE|OPT_SH, IGNOREBRACES}, {NULL, "ignoreeof", 0, IGNOREEOF}, -{NULL, "ignorenullcmd", OPT_EMULATE|OPT_NONZSH, IGNORENULLCMD}, {NULL, "incappendhistory", 0, INCAPPENDHISTORY}, {NULL, "interactive", OPT_SPECIAL, INTERACTIVE}, {NULL, "interactivecomments", OPT_BOURNE, INTERACTIVECOMMENTS}, diff --git a/Src/zsh.h b/Src/zsh.h index 9dc7f2087..ea8ba8598 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -1269,6 +1269,7 @@ enum { CSHJUNKIEHISTORY, CSHJUNKIELOOPS, CSHJUNKIEQUOTES, + CSHNULLCMD, CSHNULLGLOB, EQUALS, ERREXIT, @@ -1301,7 +1302,6 @@ enum { HUP, IGNOREBRACES, IGNOREEOF, - IGNORENULLCMD, INCAPPENDHISTORY, INTERACTIVE, INTERACTIVECOMMENTS, |