diff --git a/groups/211.native_packages_cmdline.group b/groups/211.native_packages_cmdline.group
index c0714a2..9377cfd 100644
--- a/groups/211.native_packages_cmdline.group
+++ b/groups/211.native_packages_cmdline.group
@@ -14,8 +14,8 @@ the_silver_searcher toilet tree terminally_tetris ubase which zsh")";
 : ${PKG_BAS_IN_TREE:=1};
 : ${PKG_BAS_FORCE_AUTORECONF:=1};
 : ${PKG_BASH_DEPENDS:="ncurses"};
-: ${PKG_BASH_SHA256SUM:=a139c166df7ff4471c5e0733051642ee5556c1cc8a4a78f145583c5c81ab32fb};
-: ${PKG_BASH_VERSION:=5.2};
+: ${PKG_BASH_SHA256SUM:=68d978264253bc933d692f1de195e2e5b463a3984dfb4e5504b076865f16b6dd};
+: ${PKG_BASH_VERSION:=5.2.9};
 : ${PKG_BASH_URL:=https://ftp.gnu.org/gnu/bash/bash-${PKG_BASH_VERSION}.tar.gz};
 : ${PKG_BASH_CONFIGURE_ARGS_EXTRA:="--without-bash-malloc --with-curses"};
 : ${PKG_BASH_MAKEFLAGS_BUILD:=-j1};
diff --git a/patches/bash-5.2.9_pre.local.patch b/patches/bash-5.2.9_pre.local.patch
new file mode 100644
index 0000000..677e7d9
--- /dev/null
+++ b/patches/bash-5.2.9_pre.local.patch
@@ -0,0 +1,72 @@
+diff -ru bash-5.1.orig/configure bash-5.1/configure
+--- bash-5.1.orig/configure	2020-12-04 15:05:14.000000000 +0100
++++ bash-5.1/configure	2020-12-08 14:34:05.162114735 +0100
+@@ -2917,6 +2917,7 @@
+ *-nsk*)		opt_bash_malloc=no ;;	# HP NonStop
+ *-haiku*)	opt_bash_malloc=no ;;	# Haiku OS
+ *-genode*)	opt_bash_malloc=no ;;	# Genode has no sbrk
++*-midipix*)	opt_bash_malloc=no ;;	# Midipix
+ esac
+ 
+ # memory scrambling on free()
+diff -ru bash-5.1.orig/lib/sh/oslib.c bash-5.1/lib/sh/oslib.c
+--- bash-5.1.orig/lib/sh/oslib.c	2013-10-14 15:12:57.000000000 +0200
++++ bash-5.1/lib/sh/oslib.c	2020-12-08 14:35:05.062112859 +0100
+@@ -280,7 +280,7 @@
+ long
+ getmaxchild ()
+ {
+-  static long maxchild = -1L;
++  static long maxchild = _SC_CHILD_MAX;
+ 
+   if (maxchild > 0)
+     return maxchild;
+--- bash-5.1.8/builtins/psize.sh.orig	2013-10-14 15:14:35.000000000 +0200
++++ bash-5.1.8/builtins/psize.sh	2021-08-19 09:16:16.724336836 +0200
+@@ -1,21 +1,6 @@
+ #! /bin/sh
+ #
+-# psize.sh -- determine this system's pipe size, and write a define to
+-#             pipesize.h so ulimit.c can use it.
+-
+-: ${TMPDIR:=/tmp}
+-# try to use mktemp(1) if the system supports it
+-{ TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null
+-used_mktemp=true
+-
+-if [ -z "$TMPFILE" ]; then
+-	TMPNAME=pipsize.$$
+-	TMPFILE=$TMPDIR/$TMPNAME
+-	used_mktemp=false
+-fi
+-
+-trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15
+-trap 'rm -f "$TMPFILE"' 0
++# psize.sh -- write midipix' pipe size define to pipesize.h so ulimit.c can use it.
+ 
+ echo "/*"
+ echo " * pipesize.h"
+@@ -24,22 +9,6 @@
+ echo " * Do not edit!"
+ echo " */"
+ echo ""
+-
+-#
+-# Try to avoid tempfile races.  We can't really check for the file's
+-# existence before we run psize.aux, because `test -e' is not portable,
+-# `test -h' (test for symlinks) is not portable, and `test -f' only
+-# checks for regular files.  If we used mktemp(1), we're ahead of the
+-# game.
+-#
+-$used_mktemp || rm -f "$TMPFILE"
+-
+-./psize.aux 2>"$TMPFILE" | sleep 3
+-
+-if [ -s "$TMPFILE" ]; then
+-	echo "#define PIPESIZE `cat "$TMPFILE"`"
+-else
+-	echo "#define PIPESIZE 512"
+-fi
++echo "#define PIPESIZE 512"
+ 
+ exit 0
diff --git a/patches/bash-5.2_pre.local.patch b/patches/bash-5.2_pre.local.patch
deleted file mode 100644
index 677e7d9..0000000
--- a/patches/bash-5.2_pre.local.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -ru bash-5.1.orig/configure bash-5.1/configure
---- bash-5.1.orig/configure	2020-12-04 15:05:14.000000000 +0100
-+++ bash-5.1/configure	2020-12-08 14:34:05.162114735 +0100
-@@ -2917,6 +2917,7 @@
- *-nsk*)		opt_bash_malloc=no ;;	# HP NonStop
- *-haiku*)	opt_bash_malloc=no ;;	# Haiku OS
- *-genode*)	opt_bash_malloc=no ;;	# Genode has no sbrk
-+*-midipix*)	opt_bash_malloc=no ;;	# Midipix
- esac
- 
- # memory scrambling on free()
-diff -ru bash-5.1.orig/lib/sh/oslib.c bash-5.1/lib/sh/oslib.c
---- bash-5.1.orig/lib/sh/oslib.c	2013-10-14 15:12:57.000000000 +0200
-+++ bash-5.1/lib/sh/oslib.c	2020-12-08 14:35:05.062112859 +0100
-@@ -280,7 +280,7 @@
- long
- getmaxchild ()
- {
--  static long maxchild = -1L;
-+  static long maxchild = _SC_CHILD_MAX;
- 
-   if (maxchild > 0)
-     return maxchild;
---- bash-5.1.8/builtins/psize.sh.orig	2013-10-14 15:14:35.000000000 +0200
-+++ bash-5.1.8/builtins/psize.sh	2021-08-19 09:16:16.724336836 +0200
-@@ -1,21 +1,6 @@
- #! /bin/sh
- #
--# psize.sh -- determine this system's pipe size, and write a define to
--#             pipesize.h so ulimit.c can use it.
--
--: ${TMPDIR:=/tmp}
--# try to use mktemp(1) if the system supports it
--{ TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null
--used_mktemp=true
--
--if [ -z "$TMPFILE" ]; then
--	TMPNAME=pipsize.$$
--	TMPFILE=$TMPDIR/$TMPNAME
--	used_mktemp=false
--fi
--
--trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15
--trap 'rm -f "$TMPFILE"' 0
-+# psize.sh -- write midipix' pipe size define to pipesize.h so ulimit.c can use it.
- 
- echo "/*"
- echo " * pipesize.h"
-@@ -24,22 +9,6 @@
- echo " * Do not edit!"
- echo " */"
- echo ""
--
--#
--# Try to avoid tempfile races.  We can't really check for the file's
--# existence before we run psize.aux, because `test -e' is not portable,
--# `test -h' (test for symlinks) is not portable, and `test -f' only
--# checks for regular files.  If we used mktemp(1), we're ahead of the
--# game.
--#
--$used_mktemp || rm -f "$TMPFILE"
--
--./psize.aux 2>"$TMPFILE" | sleep 3
--
--if [ -s "$TMPFILE" ]; then
--	echo "#define PIPESIZE `cat "$TMPFILE"`"
--else
--	echo "#define PIPESIZE 512"
--fi
-+echo "#define PIPESIZE 512"
- 
- exit 0
diff --git a/patches/bash_minipix-5.2.9_pre.local.patch b/patches/bash_minipix-5.2.9_pre.local.patch
new file mode 120000
index 0000000..f0ac4ae
--- /dev/null
+++ b/patches/bash_minipix-5.2.9_pre.local.patch
@@ -0,0 +1 @@
+bash-5.2.9_pre.local.patch
\ No newline at end of file
diff --git a/patches/bash_minipix-5.2_pre.local.patch b/patches/bash_minipix-5.2_pre.local.patch
deleted file mode 120000
index 6ae2ed4..0000000
--- a/patches/bash_minipix-5.2_pre.local.patch
+++ /dev/null
@@ -1 +0,0 @@
-bash-5.2_pre.local.patch
\ No newline at end of file