Hi, the name of the shell subprocess is hardcoded in the `script' command.
The test is as follows: $ echo $SHELL /bin/ksh $ script -c 'echo $0' Script started, output file is typescript sh <---- The correct one should be 'ksh' Script done, output file is typescript I fixed. Index: script.c =================================================================== RCS file: /cvs/src/usr.bin/script/script.c,v retrieving revision 1.35 diff -u -p -r1.35 script.c --- script.c 28 Jun 2019 13:35:03 -0000 1.35 +++ script.c 29 Mar 2023 14:26:19 -0000 @@ -308,11 +308,16 @@ void doshell(char *cmd) { char *shell; - char *argp[] = {"sh", "-c", NULL, NULL}; + char *argp[] = {NULL, "-c", NULL, NULL}; shell = getenv("SHELL"); if (shell == NULL) shell = _PATH_BSHELL; + + if ((argp[0] = strrchr(shell, '/')) != NULL) + argp[0]++; + else + argp[0] = shell; (void)close(master); (void)fclose(fscript);