aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGraham Christensen <graham@grahamc.com>2018-09-27 12:40:19 -0400
committerGraham Christensen <graham@grahamc.com>2018-09-27 15:12:56 -0400
commitf11acbaf175ebb2c844cb40900adb912ff58f613 (patch)
treeb21dff51e3c03bd797de89afe503f7844dc5a77f /src
parent97504300032c7c57388d68bbe4a05b0a494e81aa (diff)
nix-shell: add bashInteractive to the start of the PATH, set SHELL
Tools which re-exec `$SHELL` or `$0` or `basename $SHELL` or even just `bash` will otherwise get the non-interactive bash, providing a broken shell for the same reasons described in https://github.com/NixOS/nixpkgs/issues/27493. Extends c94f3d5575d7af5403274d1e9e2f3c9d72989751
Diffstat (limited to 'src')
-rwxr-xr-xsrc/nix-build/nix-build.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/nix-build/nix-build.cc b/src/nix-build/nix-build.cc
index 94d3a2756..b78f3d9e4 100755
--- a/src/nix-build/nix-build.cc
+++ b/src/nix-build/nix-build.cc
@@ -417,16 +417,20 @@ void mainWrapped(int argc, char * * argv)
"dontAddDisableDepTrack=1; "
"[ -e $stdenv/setup ] && source $stdenv/setup; "
"%3%"
+ "PATH=\"%4%:$PATH\"; "
+ "SHELL=%5%; "
"set +e; "
R"s([ -n "$PS1" ] && PS1='\n\[\033[1;32m\][nix-shell:\w]\$\[\033[0m\] '; )s"
"if [ \"$(type -t runHook)\" = function ]; then runHook shellHook; fi; "
"unset NIX_ENFORCE_PURITY; "
"shopt -u nullglob; "
- "unset TZ; %4%"
- "%5%",
+ "unset TZ; %6%"
+ "%7%",
(Path) tmpDir,
(pure ? "" : "p=$PATH; "),
(pure ? "" : "PATH=$PATH:$p; unset p; "),
+ dirOf(shell),
+ shell,
(getenv("TZ") ? (string("export TZ='") + getenv("TZ") + "'; ") : ""),
envCommand));