diff --git a/mk/target.mk b/mk/target.mk
index 8117ba67af0236fbee604950b947cf11f4dae8d1..d3257554693ffc343ac72dce7f0c7de3eee5aa70 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -374,7 +374,11 @@ ifneq "$(SCRIPT_PROG)" ""
 #
 # ToDo: make this work for shell scripts (drop the initial $).
 #
+ifeq "$(INTERP)" "$(SHELL)"
+SCRIPT_SUBST=$(foreach val,$(SCRIPT_SUBST_VARS),"echo \"$(val)=\\\"$($(val))\\\";\" >> $@;")
+else
 SCRIPT_SUBST=$(foreach val,$(SCRIPT_SUBST_VARS),"echo \"$$\"\"$(val)=\\\"$($(val))\\\";\" >> $@;")
+endif
 
 all :: $(SCRIPT_PROG)
 
@@ -911,7 +915,7 @@ ifneq "$(HS_OBJS)" ""
 ifneq "$(filter -split-objs,$(HC_OPTS))" ""
 clean ::
 	find $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
-	rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS))
+	-rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS))
 endif
 endif