Date: Wed, 12 Jun 2002 11:30:13 -0700 (PDT) From: Joe Kelsey <joek@mail.flyingcroc.net> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/39198: sh aborts on variables with periods Message-ID: <200206121830.g5CIUDY90904@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/39198; it has been noted by GNATS. From: Joe Kelsey <joek@mail.flyingcroc.net> To: Peter Pentchev <roam@ringlet.net> Cc: Joe Kelsey <joek@mail.flyingcroc.net>, bug-followup@FreeBSD.org Subject: Re: bin/39198: sh aborts on variables with periods Date: Wed, 12 Jun 2002 11:24:01 -0700 Peter Pentchev wrote: >On Wed, Jun 12, 2002 at 06:08:27PM -0000, Joe Kelsey wrote: > > >>>Number: 39198 >>>Category: bin >>>Synopsis: sh aborts on variables with periods >>>Originator: Joe Kelsey >>> >>> >>>Description: >>> >>> >> /bin/sh does not gracefully accept variables with periods. >> >> >[snip] > > >> if [ -n "$KSH_VERSION"] || [ -n "${.sh.version}" ] >> then >> # ksh-only stuff >> fi >> >> Either /bin/sh has to allow parameters to contain periods or it >> has to provide a reliable method of detecting /bin/sh versus >> ksh. >> >> > >Does ksh93 set $SHELL to 'sh' and, for login shells, '-sh', or does it >(as it should, IMHO) set it to 'ksh' and '-ksh', respectively? > > ksh sets it to /bin/ksh. Here is an example of the problem: unx48.staff.flyingcroc.net$ su Password: unx48# ps PID TT STAT TIME COMMAND 82521 p0 S 0:00.03 _su (csh) 82523 p0 R+ 0:00.00 ps 175 v0 Is 0:00.02 login -p root 341 v0 I 0:00.03 -csh (csh) 343 v0 S+ 0:07.30 top 176 v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1 177 v2 Is+ 0:00.00 /usr/libexec/getty Pc ttyv2 178 v3 Is+ 0:00.00 /usr/libexec/getty Pc ttyv3 179 v4 Is+ 0:00.00 /usr/libexec/getty Pc ttyv4 180 v5 Is+ 0:00.00 /usr/libexec/getty Pc ttyv5 181 v6 Is+ 0:00.00 /usr/libexec/getty Pc ttyv6 182 v7 Is+ 0:00.00 /usr/libexec/getty Pc ttyv7 139 con- I+ 0:00.01 /bin/sh /usr/local/bin/safe_mysqld --user=mysql 148 con- I+ 0:00.00 qmail-lspawn |dot-forward .forward\n|preline -f /usr/ unx48# echo $SHELL /bin/csh unx48# sh Syntax error: Bad substitution # echo $SHELL /bin/csh # exit unx48# exit exit /home/joek unx48.staff.flyingcroc.net$ echo $SHELL /bin/ksh If there was a reliable way to detect /bin/sh I could use that instead of trying to detect ksh. Alternatively, if /bin/sh accepted periods in variable names, it would pass the [ -n "${.sh.version}" ] test simply because it would think the parameter .sh.version was null. not sure if this helps... /Joe To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206121830.g5CIUDY90904>