diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-11-10 13:35:09 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-11-10 13:35:09 +0100 |
commit | 78b01de68d6ecb65ed3b3220e96d290e116436aa (patch) | |
tree | 5cf6676fc1f03ce84fa5a6b5acc5da9538ba74ef /pkgs | |
parent | 103f5658a49e35dbac2fcec4a58937b9045836cb (diff) | |
download | nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar.gz nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar.bz2 nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar.lz nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar.xz nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.tar.zst nixlib-78b01de68d6ecb65ed3b3220e96d290e116436aa.zip |
substituteAll: Enumerate environment variables more reliably
Getting the names of all environment variables is tricky. The previous implementation easily got confused by multi-line variables. The new one is more reliable but not still not perfect. This works around a segfault in Bash 4.3, where the expression "${!var}" (where var="-9") crashes under certain conditions. http://hydra.nixos.org/build/16693445
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/stdenv/generic/setup.sh | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index fe801c6bb971..987d7766ce89 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -386,7 +386,7 @@ substituteAll() { local output="$2" # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do + for envVar in $(env | sed -e $'s/^\([a-z][^=]*\)=.*/\\1/; t \n d'); do if [ "$NIX_DEBUG" = "1" ]; then echo "$envVar -> ${!envVar}" fi |