diff --git a/require.c b/require.c
index 26fc93c0fff23f2f5aacc3f5e5113d8514c916fc..ddc51db86e583704c632d694f146a8619d75d1fa 100644
--- a/require.c
+++ b/require.c
@@ -1574,4 +1574,71 @@ require_priv(const char *module,
         char *t;
         t = getenv("TEMPLATES");
         if (globalTemplates && (!t || strcmp(globalTemplates, t) != 0))
-            pute
\ No newline at end of file
+            putenvprintf("TEMPLATES=%s", globalTemplates);
+    }
+
+    if (loaded && args == NULL)
+        return 0; /* no need to execute startup script twice if not with new arguments */
+
+    return status;
+}
+
+static const iocshFuncDef requireDef = {
+    "require", 3, (const iocshArg *[]){
+                      &(iocshArg){"module", iocshArgString},
+                      &(iocshArg){"[version]", iocshArgString},
+                      &(iocshArg){"[substitutions]", iocshArgString},
+                  }};
+
+static void requireFunc(const iocshArgBuf *args)
+{
+    require(args[0].sval, args[1].sval, args[2].sval);
+}
+
+static const iocshFuncDef libversionShowDef = {
+    "libversionShow", 1, (const iocshArg *[]){
+                             &(iocshArg){"outputfile", iocshArgString},
+                         }};
+
+static void libversionShowFunc(const iocshArgBuf *args)
+{
+    libversionShow(args[0].sval);
+}
+
+static const iocshFuncDef ldDef = {
+    "ld", 1, (const iocshArg *[]){
+                 &(iocshArg){"library", iocshArgString},
+             }};
+
+static void ldFunc(const iocshArgBuf *args)
+{
+    loadlib(args[0].sval);
+}
+
+static const iocshFuncDef pathAddDef = {
+    "pathAdd", 2, (const iocshArg *[]){
+                      &(iocshArg){"ENV_VARIABLE", iocshArgString},
+                      &(iocshArg){"directory", iocshArgString},
+                  }};
+
+static void pathAddFunc(const iocshArgBuf *args)
+{
+    pathAdd(args[0].sval, args[1].sval);
+}
+
+static void requireRegister(void)
+{
+    static int firstTime = 1;
+    if (firstTime)
+    {
+        firstTime = 0;
+        iocshRegister(&requireDef, requireFunc);
+        iocshRegister(&libversionShowDef, libversionShowFunc);
+        iocshRegister(&ldDef, ldFunc);
+        iocshRegister(&pathAddDef, pathAddFunc);
+        registerExternalModules();
+    }
+}
+
+epicsExportRegistrar(requireRegister);
+epicsExportAddress(int, requireDebug);