diff --git a/cde/programs/dtksh/Imakefile b/cde/programs/dtksh/Imakefile
index 78c00ba9b..18bad1f92 100644
--- a/cde/programs/dtksh/Imakefile
+++ b/cde/programs/dtksh/Imakefile
@@ -29,8 +29,7 @@ LOCAL_LDFLAGS = -bE:dtksh.exp
#ifdef SunArchitecture
.NO_PARALLEL:
-/* These need to be manually set for Solaris due to a bug in the build system */
-KSH_LDFLAGS = -lm -lsocket
+SYS_LIBRARIES = -lm -lsecdb -lsocket -lnsl
#endif
DEPEND_DEFINES = $(DEPENDDEFINES)
diff --git a/cde/programs/dtksh/dtkcmds.c b/cde/programs/dtksh/dtkcmds.c
index 43c5b1baa..8528e8a29 100644
--- a/cde/programs/dtksh/dtkcmds.c
+++ b/cde/programs/dtksh/dtkcmds.c
@@ -58,9 +58,7 @@
#include "hash.h"
#include "stdio.h"
#include "defs.h"
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "dtkcmds.h"
#include "xmcvt.h"
diff --git a/cde/programs/dtksh/dtkcvt.c b/cde/programs/dtksh/dtkcvt.c
index f2414376c..2b0a2d36a 100644
--- a/cde/programs/dtksh/dtkcvt.c
+++ b/cde/programs/dtksh/dtkcvt.c
@@ -55,9 +55,7 @@
#include
#include "hash.h"
#include "stdio.h"
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "XtCvtrs.h"
#include "dtkcmds.h"
diff --git a/cde/programs/dtksh/dtksh.h b/cde/programs/dtksh/dtksh.h
index 0205c0d95..1313c414f 100644
--- a/cde/programs/dtksh/dtksh.h
+++ b/cde/programs/dtksh/dtksh.h
@@ -33,9 +33,7 @@
#ifndef _Dtksh_dtksh_h
#define _Dtksh_dtksh_h
-#if !defined(NO_AST)
#include "nval.h"
-#endif
#define SUCCESS 0
#define FAIL (-1)
diff --git a/cde/programs/dtksh/init.patch b/cde/programs/dtksh/init.patch
index 85167c685..c0bf6cd69 100644
--- a/cde/programs/dtksh/init.patch
+++ b/cde/programs/dtksh/init.patch
@@ -1,31 +1,22 @@
---- ./ksh93/src/cmd/ksh93/sh/init.c 2020-11-22 15:34:35.964537420 -0600
-+++ init.c 2020-12-31 19:31:00.091176802 -0600
-@@ -48,6 +48,38 @@
+--- ./ksh93/src/cmd/ksh93/sh/init.c 2021-01-16 15:27:03.589079734 -0600
++++ init.c 2021-01-16 15:53:50.700864511 -0600
+@@ -48,6 +48,28 @@
#include "lexstates.h"
#include "version.h"
+#ifdef BUILD_DTKSH
+#include
+#include
-+#include
-+#include
+#include
+#include
+#include
+#include
+#include
+#include
-+#include
-+#include
-+#include
+#include
+#include
-+#include "hash.h"
-+#include "stdio.h"
+
-+#define NO_AST
+#include "dtksh.h"
-+#undef NO_AST
+#include "xmksh.h"
+#include "dtkcmds.h"
+#include "xmcvt.h"
@@ -33,16 +24,15 @@
+#include "extra.h"
+#include "xmwidgets.h"
+#include "msgs.h"
-+#include
+#endif
+
#if _hdr_wctype
#include
#include
-@@ -1469,6 +1501,16 @@
- #endif
- if(shp->userinit=userinit)
- (*userinit)(shp, 0);
+@@ -1481,6 +1503,16 @@
+ shp->exittrap = 0;
+ shp->errtrap = 0;
+ shp->end_fn = 0;
+#ifdef BUILD_DTKSH
+ int * lockedFds = LockKshFileDescriptors();
+ (void) XtSetLanguageProc((XtAppContext)NULL, (XtLanguageProc)NULL,
diff --git a/cde/programs/dtksh/ksh93 b/cde/programs/dtksh/ksh93
index 737438a30..6025c8125 160000
--- a/cde/programs/dtksh/ksh93
+++ b/cde/programs/dtksh/ksh93
@@ -1 +1 @@
-Subproject commit 737438a30f3ccee326a74950d6c2ca7c7123d2f7
+Subproject commit 6025c8125e596ccf5e25c651a8800c072310f3a4
diff --git a/cde/programs/dtksh/widget.c b/cde/programs/dtksh/widget.c
index 924caed68..3595cc6fe 100644
--- a/cde/programs/dtksh/widget.c
+++ b/cde/programs/dtksh/widget.c
@@ -42,9 +42,7 @@
#include
#include "hash.h"
#include "stdio.h"
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "dtkcmds.h"
#include "xmcvt.h"
diff --git a/cde/programs/dtksh/widget.h b/cde/programs/dtksh/widget.h
index f50d34a73..1af64641a 100644
--- a/cde/programs/dtksh/widget.h
+++ b/cde/programs/dtksh/widget.h
@@ -45,9 +45,7 @@
#include
#include
#include
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
extern int Wtab_free;
extern wtab_t **W;
diff --git a/cde/programs/dtksh/xmcmds.c b/cde/programs/dtksh/xmcmds.c
index 547905990..7afbfae5d 100644
--- a/cde/programs/dtksh/xmcmds.c
+++ b/cde/programs/dtksh/xmcmds.c
@@ -47,9 +47,7 @@
#include
#include "hash.h"
#include "stdio.h"
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "dtkcmds.h"
#include "XtCvtrs.h"
diff --git a/cde/programs/dtksh/xmcvt.c b/cde/programs/dtksh/xmcvt.c
index 21320bcf4..f178b6a0b 100644
--- a/cde/programs/dtksh/xmcvt.c
+++ b/cde/programs/dtksh/xmcvt.c
@@ -55,9 +55,7 @@
#include
#include "hash.h"
#include "stdio.h"
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "XtCvtrs.h"
#include "dtkcmds.h"
diff --git a/cde/programs/dtksh/xmwidgets.c b/cde/programs/dtksh/xmwidgets.c
index a3833442e..de08d8fb3 100644
--- a/cde/programs/dtksh/xmwidgets.c
+++ b/cde/programs/dtksh/xmwidgets.c
@@ -77,9 +77,7 @@
#include
#include
-#define NO_AST
#include "dtksh.h"
-#undef NO_AST
#include "xmksh.h"
#include "dtkcmds.h"