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
				
			
		|  | @ -59,6 +59,21 @@ string getEnv(const string & key, const string & def) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| std::map<std::string, std::string> getEnv() | ||||
| { | ||||
|     std::map<std::string, std::string> env; | ||||
|     for (size_t i = 0; environ[i]; ++i) { | ||||
|         auto s = environ[i]; | ||||
|         auto eq = strchr(s, '='); | ||||
|         if (!eq) | ||||
|             // invalid env, just keep going
 | ||||
|             continue; | ||||
|         env.emplace(std::string(s, eq), std::string(eq + 1)); | ||||
|     } | ||||
|     return env; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| Path absPath(Path path, Path dir) | ||||
| { | ||||
|     if (path[0] != '/') { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue