maintain $path and $PATH simultaneously
diff --git a/src/cmd/rc/exec.c b/src/cmd/rc/exec.c
index ebed11d..9ab7c29 100644
--- a/src/cmd/rc/exec.c
+++ b/src/cmd/rc/exec.c
@@ -117,6 +117,7 @@
 	Trapinit();
 	Vinit();
 	itoa(num, mypid=getpid());
+	pathinit();
 	setvar("pid", newword(num, (word *)0));
 	setvar("cflag", flag['c']?newword(flag['c'][0], (word *)0)
 				:(word *)0);
@@ -369,7 +370,7 @@
 	runq->pc++;
 	poplist();
 }
-char *list2str(word *words){
+char *_list2str(word *words, int c){
 	char *value, *s, *t;
 	int len=0;
 	word *ap;
@@ -379,12 +380,15 @@
 	s=value;
 	for(ap=words;ap;ap=ap->next){
 		for(t=ap->word;*t;) *s++=*t++;
-		*s++=' ';
+		*s++=c;
 	}
 	if(s==value) *s='\0';
 	else s[-1]='\0';
 	return value;
 }
+char *list2str(word *words){
+	return _list2str(words, ' ');
+}
 void Xmatch(void){
 	word *p;
 	char *subject;
@@ -464,6 +468,8 @@
 	freewords(v->val);
 	v->val=runq->argv->words;
 	v->changed=1;
+	if(v->changefn)
+		v->changefn(v);
 	runq->argv->words=0;
 	poplist();
 }