On 2024-07-14 at 18:28:56, rsbecker@xxxxxxxxxxxxx wrote: > On Sunday, July 14, 2024 2:16 PM, brian m. carlson wrote: > >I don't think this is the right approach. Every version of ksh _except_ AT&T ksh > >works just fine here. pdksh, mksh, lksh, OpenBSD's ksh (which is also its /bin/sh) > >work fine, as do bash, dash, FreeBSD's sh (ash), Busybox's sh (also ash), and zsh > >(when run in sh mode with 5.9 or newer). AT&T ksh is considering adding local in a > >newer version for this reason. > > > >Literally only AT&T ksh is not supported here, and so anyone can set SHELL_PATH to > >any suitable shell. I don't think it's useful to get rid of local when there are a variety > >of acceptable and portable options. > > We can add NonStop's ksh to the list of not supported. I'm using TEST_SHELL_PATH while running make all in the t directory. Test passes when I use bash. For some reason (maybe GNUMake 4.1, which is what I have in my POSIX environment, I don't get TEST_SHELL_PATH passed down from the outer Makefile, but I can work with that. t0021 is now passing in my current CI stream using bash 5.0.18. I think we had discussed that you were using AT&T ksh on NonStop, which would explain the situation. That's the most common version of ksh on proprietary Unix systems, and you can usually detect it with something like this: % ksh -c 'echo $KSH_VERSION' Version AJM 93u+m/1.0.8 2024-01-01 Variants of pdksh look like this (this one from OpenBSD): % ksh -c 'echo $KSH_VERSION' @(#)PD KSH v5.2.14 99/07/13.2 And mksh and lksh (which are the same shell, just compiled differently, look like this: % mksh -c 'echo $KSH_VERSION' @(#)MIRBSD KSH R59 2024/02/01 +Debian % lksh -c 'echo $KSH_VERSION' @(#)LEGACY KSH R59 2024/02/01 +Debian I think using bash as a workaround is the right choice here if all you have is AT&T ksh. -- brian m. carlson (they/them or he/him) Toronto, Ontario, CA
Attachment:
signature.asc
Description: PGP signature