Date: Sat, 17 Feb 1996 20:56:16 +0200 (SAT) From: Mark Murray <mark@grondar.za> To: FreeBSD-gnats-submit@freebsd.org Subject: bin/1030: /bin/sh does not pass environment variables on properly Message-ID: <199602171856.UAA13002@grumble.grondar.za> Resent-Message-ID: <199602171900.LAA23168@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 1030 >Category: bin >Synopsis: /bin/sh does not pass environment variables on properly >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Feb 17 11:00:01 PST 1996 >Last-Modified: >Originator: Mark Murray >Organization: GTA >Release: FreeBSD 2.2-CURRENT i386 >Environment: FreeBSD 2.0.5 through -Current (maybe more) >Description: Environment variables created "on the fly" are not properly passed through to compiled code, although subshells seem able to get to them. This may be a bug in getenv(3). The following operationg systems do NOT have the problem: BSDI HP-UX IRIX Linux OSF1 SunOS4 SunOS5 ULTRIX >How-To-Repeat: Run the following script: ------------------------------8<-test1---------------------------- #! /bin/sh echo "-- Shell version" (echo FOO=/bar/baz ; echo "echo FOO is \$FOO") | /bin/sh -ax echo "-- Shell version with export" (echo export FOO=/bar/baz ; echo "echo FOO is \$FOO") | /bin/sh -ax echo "-- C version" (echo FOO=/bar/baz ; echo "./env") | /bin/sh -ax echo "-- C version with export" (echo export FOO=/bar/baz ; echo "./env") | /bin/sh -ax ------------------------------8<----------------------------- ...where "env" is compiled from this C code: ------------------------------8<-env.c---------------------------- #include <stdlib.h> #include <stdio.h> void main(void) { char *foo; foo = getenv("FOO"); if (foo) printf("FOO is %s\n", foo); else printf("FOO does not exist!\n"); } ------------------------------8<----------------------------- ... and here is a script of a run: ------------------------------8<-run---------------------------- Script started on Sat Feb 17 20:36:45 1996 bash$ ./test1 -- Shell version + FOO=/bar/baz + echo FOO is /bar/baz FOO is /bar/baz -- Shell version with export + export FOO=/bar/baz + echo FOO is /bar/baz FOO is /bar/baz -- C version + FOO=/bar/baz + ./env FOO does not exist! <----------Lookee here - env did not get the var! -- C version with export + export FOO=/bar/baz + ./env FOO is /bar/baz bash$ exit exit Script done on Sat Feb 17 20:36:53 1996 ------------------------------8<----------------------------- >Fix: Use bash :-). Bash does not have this problem. >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602171856.UAA13002>