Implement word, wordlist, words, firstword, and lastword
diff --git a/exec.go b/exec.go
index 19359d4..1198e2e 100644
--- a/exec.go
+++ b/exec.go
@@ -207,6 +207,8 @@
 		})
 	}
 	ev := newEvaluator(localVars)
+	ev.filename = rule.filename
+	ev.lineno = rule.cmdLineno
 	var cmds []string
 	for _, cmd := range rule.cmds {
 		if strings.IndexByte(cmd, '$') < 0 {