Implement $< and $^
diff --git a/exec.go b/exec.go
index e6cd8f1..902a543 100644
--- a/exec.go
+++ b/exec.go
@@ -126,6 +126,7 @@
 	}
 
 	latest := int64(-1)
+	var actualInputs []string
 	for _, input := range rule.inputs {
 		if len(rule.outputPatterns) > 0 {
 			if len(rule.outputPatterns) > 1 {
@@ -139,6 +140,7 @@
 			outputSuffix := filepath.Ext(output)
 			input = fmt.Sprintf("%s.%s", output[:len(output)-len(outputSuffix)], input)
 		}
+		actualInputs = append(actualInputs, input)
 
 		ts, err := ex.build(vars, input)
 		if err != nil {
@@ -159,6 +161,10 @@
 	}
 	// automatic variables.
 	localVars["@"] = escapeVar(output)
+	if len(actualInputs) > 0 {
+		localVars["<"] = escapeVar(actualInputs[0])
+		localVars["^"] = escapeVar(strings.Join(actualInputs, " "))
+	}
 	Log("local vars: %q", localVars)
 	ev := newEvaluator(localVars)
 	var cmds []string
diff --git a/test/command_vars.mk b/test/command_vars.mk
new file mode 100644
index 0000000..3d60e21
--- /dev/null
+++ b/test/command_vars.mk
@@ -0,0 +1,9 @@
+test: foo
+
+foo: bar baz
+	echo $@
+	echo $<
+	echo $^
+
+bar:
+baz:
diff --git a/test/suffix_rule.mk b/test/suffix_rule.mk
index cecddfb..4227731 100644
--- a/test/suffix_rule.mk
+++ b/test/suffix_rule.mk
@@ -6,4 +6,4 @@
 test2: foo.o
 
 .c.o:
-	echo PASS
+	echo PASS $@ $< $^