zsh-workers
 help / color / mirror / code / Atom feed
* *suggestion* for NULLCMD and emulate [ck]sh
@ 2000-02-08 10:54 Alexandre Duret-Lutz
  2000-02-08 18:07 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Alexandre Duret-Lutz @ 2000-02-08 10:54 UTC (permalink / raw)
  To: zsh-workers

I'm sure this must have already been discussed on the list,
but I couldn't find anything on this in the archive.

When doing redirections with no file, shells can show three behaviours:

> file

is equivalent to 

[k]sh)     : > file
csh)       forbiden
zsh)       $NULLCMD > file

Zsh can emulate the to first by setting NULLCMD to ':' or unsetting NULLCMD.

The documentation say 

       The standard Bourne shell behaviour is obtained by setting
       NULLCMD and READNULLCMD to `:'.  This is the default  when
       zsh is emulating sh or ksh.

which is quite wrong.  This is the default only when zsh is *started*
as sh or ksh, since the builtin `emulate' won't modify the parameter
NULLCMD.

What I would like zsh do is:

~/tmp/tmp % > foo                                                      11:30 #1
bar
~/tmp/tmp % emulate sh                                                 11:31 #2
~/tmp/tmp % > foo                                                      11:31 #3
~/tmp/tmp % emulate csh                                                11:31 #4
~/tmp/tmp % > foo                                                      11:31 #5
zsh: redirection with no command
~/tmp/tmp %                                                            Err 1 #6

Presently this is not the case.

I thought this could be accomplished by adding two options to zsh,
one would tell wether the NULLCMD parameter should be considered 
or not by the exec.c code, and the other could say what the
default behaviour (sh or csh) when NULLCMD is unset.

We would have

               [k]sh  csh  zsh
IGNORE_NULLCMD   on   on   off
SH_NULLCMD       on   off  off

I'm not sure this is the right way to handle this. You will
certainly have better ideas.  Anyway, the patch below is my
attempt to implement this.

Index: Src/zsh.h
--- Src/zsh.h Thu, 03 Feb 2000 00:03:47 +0100 Alexandre
+++ Src/zsh.h Tue, 08 Feb 2000 11:47:38 +0100 Alexandre
@@ -1301,6 +1301,7 @@
     HUP,
     IGNOREBRACES,
     IGNOREEOF,
+    IGNORENULLCMD,
     INCAPPENDHISTORY,
     INTERACTIVE,
     INTERACTIVECOMMENTS,
@@ -1352,6 +1353,7 @@
     SHFILEEXPANSION,
     SHGLOB,
     SHINSTDIN,
+    SHNULLCMD,
     SHOPTIONLETTERS,
     SHORTLOOPS,
     SHWORDSPLIT,
Index: Src/options.c
--- Src/options.c Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Src/options.c Tue, 08 Feb 2000 11:47:39 +0100 Alexandre
@@ -134,6 +134,7 @@
 {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},
@@ -185,6 +186,7 @@
 {NULL, "shfileexpansion",     OPT_EMULATE|OPT_BOURNE,	 SHFILEEXPANSION},
 {NULL, "shglob",	      OPT_EMULATE|OPT_BOURNE,	 SHGLOB},
 {NULL, "shinstdin",	      OPT_SPECIAL,		 SHINSTDIN},
+{NULL, "shnullcmd",           OPT_EMULATE|OPT_BOURNE,	 SHNULLCMD},
 {NULL, "shoptionletters",     OPT_EMULATE|OPT_BOURNE,	 SHOPTIONLETTERS},
 {NULL, "shortloops",	      OPT_EMULATE|OPT_NONBOURNE, SHORTLOOPS},
 {NULL, "shwordsplit",	      OPT_EMULATE|OPT_BOURNE,	 SHWORDSPLIT},
Index: Src/init.c
--- Src/init.c Mon, 07 Feb 2000 17:48:28 +0100 Alexandre
+++ Src/init.c Tue, 08 Feb 2000 11:47:40 +0100 Alexandre
@@ -666,17 +666,8 @@
     mypid = (zlong) getpid();
     term  = ztrdup("");
 
-    /* The following variable assignments cause zsh to behave more *
-     * like Bourne and Korn shells when invoked as "sh" or "ksh".  *
-     * NULLCMD=":" and READNULLCMD=":"                             */
-
-    if (emulation == EMULATE_KSH || emulation == EMULATE_SH) {
-	nullcmd     = ztrdup(":");
-	readnullcmd = ztrdup(":");
-    } else {
-	nullcmd     = ztrdup("cat");
-	readnullcmd = ztrdup("more");
-    }
+    nullcmd     = ztrdup("cat");
+    readnullcmd = ztrdup("more");
 
     /* We cache the uid so we know when to *
      * recheck the info for `USERNAME'     */
Index: Src/exec.c
--- Src/exec.c Tue, 08 Feb 2000 10:59:23 +0100 Alexandre
+++ Src/exec.c Tue, 08 Feb 2000 11:48:13 +0100 Alexandre
@@ -1661,11 +1661,16 @@
 		    } else if (varspc) {
 			nullexec = 2;
 			break;
-		    } else if (!nullcmd || !*nullcmd ||
-			       (cflags & BINF_PREFIX)) {
+		    } else if (((!nullcmd || !*nullcmd || opts[IGNORENULLCMD])
+				&& !opts[SHNULLCMD]) 
+			       ||(cflags & BINF_PREFIX)) {
 			zerr("redirection with no command", NULL, 0);
 			errflag = lastval = 1;
 			return;
+		    } else if (!nullcmd || !*nullcmd || opts[IGNORENULLCMD]) {
+			if (!args)
+			    args = newlinklist();
+			addlinknode(args, dupstring(":"));
 		    } else if (readnullcmd && *readnullcmd &&
 			       ((Redir) peekfirst(redir))->type == READ &&
 			       !nextnode(firstnode(redir))) {
Index: Doc/Zsh/redirect.yo
--- Doc/Zsh/redirect.yo Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Doc/Zsh/redirect.yo Tue, 08 Feb 2000 11:48:19 +0100 Alexandre
@@ -198,6 +198,8 @@
 sect(Redirections with no command)
 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
@@ -212,6 +214,15 @@
 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 standard Bourne shell behaviour is obtained by setting tt(NULLCMD) and
-tt(READNULLCMD) to `tt(:)'.  This is the default when zsh is emulating bf(sh)
-or bf(ksh).
+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).
Index: Doc/Zsh/options.yo
--- Doc/Zsh/options.yo Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Doc/Zsh/options.yo Tue, 08 Feb 2000 11:48:21 +0100 Alexandre
@@ -533,6 +533,13 @@
 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))(
@@ -977,6 +984,14 @@
 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.
+)
+pindex(SH_NULLCMD)
+cindex(sh, redirections with no command)
+cindex(ksh, redirections with no command)
+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)).
 )
 pindex(SH_OPTION_LETTERS)
 cindex(sh, single letter options style)


-- 
Alexandre Duret-Lutz


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *suggestion* for NULLCMD and emulate [ck]sh
  2000-02-08 10:54 *suggestion* for NULLCMD and emulate [ck]sh Alexandre Duret-Lutz
@ 2000-02-08 18:07 ` Bart Schaefer
  2000-02-08 22:42   ` Alexandre Duret-Lutz
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2000-02-08 18:07 UTC (permalink / raw)
  To: Alexandre Duret-Lutz, zsh-workers

On Feb 8, 11:54am, Alexandre Duret-Lutz wrote:
} Subject: *suggestion* for NULLCMD and emulate [ck]sh
}
} When doing redirections with no file, shells can show three behaviours:
} 
} > file
} 
} is equivalent to 
} 
} [k]sh)     : > file
} csh)       forbiden
} zsh)       $NULLCMD > file
} 
} Zsh can emulate the to first by setting NULLCMD to ':' or unsetting NULLCMD.
} 
} What I would like zsh do is [let the user choose any of the three].
} 
} I thought this could be accomplished by adding two options to zsh,
} one would tell wether the NULLCMD parameter should be considered 
} or not by the exec.c code, and the other could say what the
} default behaviour (sh or csh) when NULLCMD is unset.

I think something along these lines might be OK, but that the semantics
and names that you chose are not quite right.

Rather than have zsh change the value of NULLCMD when it starts up as sh
or ksh, the proposed SH_NULLCMD option should cause the ": > file" style
to be used regardless of the value of NULLCMD.

The second option, which I'd call CSH_NULLCMD for consistency, would also
ignore the value of NULLCMD but give the "redirection with no command"
error.

We then pick one of these to "win" when both are set, as presently happens
with e.g. NULLGLOB and CSH_NULLGLOB.  I don't really care which one wins.

Do we need something similar for READNULLCMD?  Can these same two options
be overloaded for both at once?  If the answers are "yes" and "no" then I
think the right thing is to not change it at all, as it's just too sloppy
to get it right.  If the first is "no" or the second is "yes," go ahead.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *suggestion* for NULLCMD and emulate [ck]sh
  2000-02-08 18:07 ` Bart Schaefer
@ 2000-02-08 22:42   ` Alexandre Duret-Lutz
  2000-02-09 18:54     ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Alexandre Duret-Lutz @ 2000-02-08 22:42 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: Alexandre Duret-Lutz, zsh-workers

>>> "Bart" == Bart Schaefer <schaefer@candle.brasslantern.com> writes:

[...]

 Bart> Rather than have zsh change the value of NULLCMD when it starts up
 Bart> as sh or ksh, the proposed SH_NULLCMD option should cause the ": >
 Bart> file" style to be used regardless of the value of NULLCMD.

 Bart> The second option, which I'd call CSH_NULLCMD for consistency, would
 Bart> also ignore the value of NULLCMD but give the "redirection with no
 Bart> command" error.

Good, I find this a lot cleaner.

 Bart> We then pick one of these to "win" when both are set, as presently
 Bart> happens with e.g. NULLGLOB and CSH_NULLGLOB.  I don't really care
 Bart> which one wins.

 Bart> Do we need something similar for READNULLCMD?  Can these same two
 Bart> options be overloaded for both at once?  If the answers are "yes"
 Bart> and "no" then I think the right thing is to not change it at all, as
 Bart> it's just too sloppy to get it right.  If the first is "no" or the
 Bart> second is "yes," go ahead.

You would answer 1:no, 2:yes.  I think there is no point trying to emulate
for instance sh for input and csh for ouput.  And should you really want to
do this, you could unset both {,C}SH_NULLCMD and play with the
{,READ}NULLCMD parameters as before.

Adapted patch that supersede 9617 below.

Index: Src/zsh.h
--- Src/zsh.h Thu, 03 Feb 2000 00:03:47 +0100 Alexandre
+++ Src/zsh.h Tue, 08 Feb 2000 22:43:05 +0100 Alexandre
@@ -1269,6 +1269,7 @@
     CSHJUNKIEHISTORY,
     CSHJUNKIELOOPS,
     CSHJUNKIEQUOTES,
+    CSHNULLCMD,
     CSHNULLGLOB,
     EQUALS,
     ERREXIT,
@@ -1352,6 +1353,7 @@
     SHFILEEXPANSION,
     SHGLOB,
     SHINSTDIN,
+    SHNULLCMD,
     SHOPTIONLETTERS,
     SHORTLOOPS,
     SHWORDSPLIT,
Index: Src/options.c
--- Src/options.c Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Src/options.c Tue, 08 Feb 2000 22:43:58 +0100 Alexandre
@@ -102,6 +102,7 @@
 {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},
@@ -185,6 +186,7 @@
 {NULL, "shfileexpansion",     OPT_EMULATE|OPT_BOURNE,	 SHFILEEXPANSION},
 {NULL, "shglob",	      OPT_EMULATE|OPT_BOURNE,	 SHGLOB},
 {NULL, "shinstdin",	      OPT_SPECIAL,		 SHINSTDIN},
+{NULL, "shnullcmd",           OPT_EMULATE|OPT_BOURNE,	 SHNULLCMD},
 {NULL, "shoptionletters",     OPT_EMULATE|OPT_BOURNE,	 SHOPTIONLETTERS},
 {NULL, "shortloops",	      OPT_EMULATE|OPT_NONBOURNE, SHORTLOOPS},
 {NULL, "shwordsplit",	      OPT_EMULATE|OPT_BOURNE,	 SHWORDSPLIT},
Index: Src/init.c
--- Src/init.c Mon, 07 Feb 2000 17:48:28 +0100 Alexandre
+++ Src/init.c Tue, 08 Feb 2000 22:41:05 +0100 Alexandre
@@ -666,17 +666,8 @@
     mypid = (zlong) getpid();
     term  = ztrdup("");
 
-    /* The following variable assignments cause zsh to behave more *
-     * like Bourne and Korn shells when invoked as "sh" or "ksh".  *
-     * NULLCMD=":" and READNULLCMD=":"                             */
-
-    if (emulation == EMULATE_KSH || emulation == EMULATE_SH) {
-	nullcmd     = ztrdup(":");
-	readnullcmd = ztrdup(":");
-    } else {
-	nullcmd     = ztrdup("cat");
-	readnullcmd = ztrdup("more");
-    }
+    nullcmd     = ztrdup("cat");
+    readnullcmd = ztrdup("more");
 
     /* We cache the uid so we know when to *
      * recheck the info for `USERNAME'     */
Index: Src/exec.c
--- Src/exec.c Tue, 08 Feb 2000 10:59:23 +0100 Alexandre
+++ Src/exec.c Tue, 08 Feb 2000 22:46:41 +0100 Alexandre
@@ -1661,11 +1661,15 @@
 		    } else if (varspc) {
 			nullexec = 2;
 			break;
-		    } else if (!nullcmd || !*nullcmd ||
+		    } 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[SHNULLCMD]) {
+			if (!args)
+			    args = newlinklist();
+			addlinknode(args, dupstring(":"));
 		    } else if (readnullcmd && *readnullcmd &&
 			       ((Redir) peekfirst(redir))->type == READ &&
 			       !nextnode(firstnode(redir))) {
Index: Doc/Zsh/redirect.yo
--- Doc/Zsh/redirect.yo Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Doc/Zsh/redirect.yo Tue, 08 Feb 2000 23:09:25 +0100 Alexandre
@@ -198,20 +198,28 @@
 sect(Redirections with no command)
 vindex(NULLCMD, use of)
 vindex(READNULLCMD, 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
+pindex(IGNORE_NULLCMD, use of)
+pindex(SH_NULLCMD, use of)
+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 standard Bourne shell behaviour is obtained by setting tt(NULLCMD) and
-tt(READNULLCMD) to `tt(:)'.  This is the default when zsh is emulating bf(sh)
-or bf(ksh).
Index: Doc/Zsh/options.yo
--- Doc/Zsh/options.yo Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Doc/Zsh/options.yo Tue, 08 Feb 2000 23:18:52 +0100 Alexandre
@@ -305,6 +305,16 @@
 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)
@@ -976,7 +986,19 @@
 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>)(
+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)

-- 
Alexandre Duret-Lutz


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: *suggestion* for NULLCMD and emulate [ck]sh
  2000-02-08 22:42   ` Alexandre Duret-Lutz
@ 2000-02-09 18:54     ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2000-02-09 18:54 UTC (permalink / raw)
  To: Alexandre Duret-Lutz; +Cc: zsh-workers

On Feb 8, 11:42pm, Alexandre Duret-Lutz wrote:
} Subject: Re: *suggestion* for NULLCMD and emulate [ck]sh
}
} Adapted patch that supersede 9617 below.

To fix a couple of typos:

Index: Doc/Zsh/options.yo
===================================================================
@@ -310,7 +310,7 @@
 vindex(READNULLCMD, ignoring)
 cindex(redirections with no command, csh)
 cindex(csh, redirections with no command)
-item(tt(IGNORE_NULLCMD) <C>)(
+item(tt(CSH_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)).
Index: Doc/Zsh/redirect.yo
===================================================================
@@ -198,7 +198,7 @@
 sect(Redirections with no command)
 vindex(NULLCMD, use of)
 vindex(READNULLCMD, use of)
-pindex(IGNORE_NULLCMD, use of)
+pindex(CSH_NULLCMD, use of)
 pindex(SH_NULLCMD, use of)
 When a simple command consists of one or more redirection operators
 and zero or more parameter assignments, but no command name, zsh can

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2000-02-09 18:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-02-08 10:54 *suggestion* for NULLCMD and emulate [ck]sh Alexandre Duret-Lutz
2000-02-08 18:07 ` Bart Schaefer
2000-02-08 22:42   ` Alexandre Duret-Lutz
2000-02-09 18:54     ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).