add new | syntax.
syntax will change.
diff --git a/src/cmd/mk/sh.c b/src/cmd/mk/sh.c
index 524167a..ba80162 100644
--- a/src/cmd/mk/sh.c
+++ b/src/cmd/mk/sh.c
@@ -1,9 +1,5 @@
 #include	"mk.h"
 
-char	*termchars = "\"'= \t";	/*used in parse.c to isolate assignment attribute*/
-char	*shflags = 0;
-int	IWS = ' ';		/* inter-word separator in env */
-
 /*
  *	This file contains functions that depend on the shell's syntax.  Most
  *	of the routines extract strings observing the shell's escape conventions.
@@ -34,8 +30,8 @@
 /*
  *	search a string for unescaped characters in a pattern set
  */
-char *
-charin(char *cp, char *pat)
+static char *
+shcharin(char *cp, char *pat)
 {
 	Rune r;
 	int n, vargen;
@@ -82,8 +78,8 @@
  *	extract an escaped token.  Possible escape chars are single-quote,
  *	double-quote,and backslash.
  */
-char*
-expandquote(char *s, Rune esc, Bufblock *b)
+static char*
+shexpandquote(char *s, Rune esc, Bufblock *b)
 {
 	Rune r;
 
@@ -110,8 +106,8 @@
  *	Input an escaped token.  Possible escape chars are single-quote,
  *	double-quote and backslash.
  */
-int
-escapetoken(Biobuf *bp, Bufblock *buf, int preserve, int esc)
+static int
+shescapetoken(Biobuf *bp, Bufblock *buf, int preserve, int esc)
 {
 	int c, line;
 
@@ -168,8 +164,8 @@
  *	check for quoted strings.  backquotes are handled here; single quotes above.
  *	s points to char after opening quote, q.
  */
-char *
-copyq(char *s, Rune q, Bufblock *buf)
+static char *
+shcopyq(char *s, Rune q, Bufblock *buf)
 {
 	if(q == '\'' || q == '"')		/* copy quoted string */
 		return copysingle(s, q, buf);
@@ -187,3 +183,24 @@
 	}
 	return s;
 }
+
+static int
+shmatchname(char *name)
+{
+	USED(name);
+
+	return 1;
+}
+
+
+Shell shshell = {
+	"sh",
+	"\"'= \t",	/*used in parse.c to isolate assignment attribute*/
+	' ',	/* inter-word separator in env */
+	shcharin,
+	shexpandquote,
+	shescapetoken,
+	shcopyq,
+	shmatchname,
+};
+