[Rd] Sys.putenv environment variables disappear (PR#1371)

Robert Gentleman rgentlem@jimmy.harvard.edu
Fri, 8 Mar 2002 16:54:10 -0500


On Fri, Mar 08, 2002 at 10:36:49PM +0100, a215020@onyx.fmr.com wrote:
> Environment variables set with Sys.putenv() disappear (i.e. become "")
> after a while, especially after heavy-duty I/O.  Example:
> 
>   R> x <- matrix(1., 3000, 3000)
>   R> save(x, file="myx.RData")
>   R> Sys.putenv(HOME="/tmp")
>   R> while (Sys.getenv("HOME") != "") {cat("ok\n"); load("myx.RData")}
> 

  We use 
   for (i = 0; i < n; i++) {
        LOGICAL(ans)[i] = putenv(CHAR(STRING_ELT(vars, i))) == 0;
    }
 and the man page for RedHat says:
         int putenv(const char *string);

DESCRIPTION
       The  putenv()  function adds or changes the value of envi-
       ronment variables.  The argument string  is  of  the  form
       name=value.   If  name does not already exist in the envi-
       ronment, then string is added to the environment.  If name
       does  exist,  then the value of name in the environment is
       changed to value.  The string pointed to by string becomes
       part  of  the  environment, so altering the string changes
       the environment.

  So, after we UNPROTECT this is bad. Seems like we need to 
  do something different.


> The loop prints "ok" twice, then exits because HOME has been destroyed.
> 
> I'm running R-1.4.1 (I also saw this in earlier versions), under
> Solaris 2.6.  Dave Kane reported this problem to R-help on 6/4/01, and
> I reported it on 11/30/01, but nobody else has confirmed (or denied)
> seeing it (except Kjetil Halvorsen did not see it on Windows).
> 
> FYI, my include/config.h file has "#define HAVE_PUTENV 1".  Here's the
> usual version info.
> Version:
>  platform = sparc-sun-solaris2.6
>  arch = sparc
>  os = solaris2.6
>  system = sparc, solaris2.6
>  status = 
>  major = 1
>  minor = 4.1
>  year = 2002
>  month = 01
>  day = 30
>  language = R
> 
> Search Path:
>  .GlobalEnv, package:misc, package:io, package:arrays, package:ls1, package:g.data, package:db, package:ts, package:ctest, Autoloads, package:base
> 
>                               -- David Brahm (brahm@alum.mit.edu)
> 
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

-- 
+---------------------------------------------------------------------------+
| Robert Gentleman                 phone : (617) 632-5250                   |
| Associate Professor              fax:   (617)  632-2444                   |
| Department of Biostatistics      office: M1B28
| Harvard School of Public Health  email: rgentlem@jimmy.dfci.harvard.edu   |
+---------------------------------------------------------------------------+
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._