nix-shell: Fix $PATH handling in the impure case
We were passing "p=$PATH" rather than "p=$PATH;", resulting in some invalid shell code. Also, construct a separate environment for the child rather than overwriting the parent's.
This commit is contained in:
		
							parent
							
								
									9fc4cb2ae9
								
							
						
					
					
						commit
						4de0639105
					
				
					 3 changed files with 55 additions and 29 deletions
				
			
		|  | @ -8,9 +8,11 @@ | |||
| #include <dirent.h> | ||||
| #include <unistd.h> | ||||
| #include <signal.h> | ||||
| 
 | ||||
| #include <functional> | ||||
| #include <limits> | ||||
| #include <cstdio> | ||||
| #include <map> | ||||
| 
 | ||||
| #ifndef HAVE_STRUCT_DIRENT_D_TYPE | ||||
| #define DT_UNKNOWN 0 | ||||
|  | @ -25,6 +27,9 @@ namespace nix { | |||
| /* Return an environment variable. */ | ||||
| string getEnv(const string & key, const string & def = ""); | ||||
| 
 | ||||
| /* Get the entire environment. */ | ||||
| std::map<std::string, std::string> getEnv(); | ||||
| 
 | ||||
| /* Return an absolutized path, resolving paths relative to the
 | ||||
|    specified directory, or the current directory otherwise.  The path | ||||
|    is also canonicalised. */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue