mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 10:15:53 +08:00 
			
		
		
		
	[Fix] use: Prepend instead of changing if shadowed by system dirs (fixes #1652)
				
					
				
			This commit is contained in:
		
				
					committed by
					
						 Jordan Harband
						Jordan Harband
					
				
			
			
				
	
			
			
			
						parent
						
							0cdc184168
						
					
				
				
					commit
					90cfb5d771
				
			
							
								
								
									
										11
									
								
								nvm.sh
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								nvm.sh
									
									
									
									
									
								
							| @@ -638,12 +638,19 @@ nvm_change_path() { | |||||||
|   elif ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/[^/]*${2-}" \ |   elif ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/[^/]*${2-}" \ | ||||||
|     && ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then |     && ! nvm_echo "${1-}" | nvm_grep -q "${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then | ||||||
|     nvm_echo "${3-}${2-}:${1-}" |     nvm_echo "${3-}${2-}:${1-}" | ||||||
|  |   # if the initial path contains BOTH an nvm path (checked for above) and | ||||||
|  |   # that nvm path is preceded by a system binary path, just prepend the | ||||||
|  |   # supplementary path instead of replacing it. | ||||||
|  |   # https://github.com/creationix/nvm/issues/1652#issuecomment-342571223 | ||||||
|  |   elif nvm_echo "${1-}" | nvm_grep -Eq "(^|:)(/usr(/local)?)?${2-}:.*${NVM_DIR}/[^/]*${2-}" \ | ||||||
|  |     || nvm_echo "${1-}" | nvm_grep -Eq "(^|:)(/usr(/local)?)?${2-}:.*${NVM_DIR}/versions/[^/]*/[^/]*${2-}"; then | ||||||
|  |     nvm_echo "${3-}${2-}:${1-}" | ||||||
|   # use sed to replace the existing nvm path with the supplementary path. This |   # use sed to replace the existing nvm path with the supplementary path. This | ||||||
|   # preserves the order of the path. |   # preserves the order of the path. | ||||||
|   else |   else | ||||||
|     nvm_echo "${1-}" | command sed \ |     nvm_echo "${1-}" | command sed \ | ||||||
|       -e "s#${NVM_DIR}/[^/]*${2-}[^:]*#${3-}${2-}#g" \ |       -e "s#${NVM_DIR}/[^/]*${2-}[^:]*#${3-}${2-}#" \ | ||||||
|       -e "s#${NVM_DIR}/versions/[^/]*/[^/]*${2-}[^:]*#${3-}${2-}#g" |       -e "s#${NVM_DIR}/versions/[^/]*/[^/]*${2-}[^:]*#${3-}${2-}#" | ||||||
|   fi |   fi | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -41,3 +41,17 @@ NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/versions/node/v7.1.0"` | |||||||
| NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/v0.1.2"` | NEW_PATH=`nvm_change_path "$EMPTY_PATH" "/bin" "$NVM_DIR/v0.1.2"` | ||||||
|  |  | ||||||
| [ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin" ] || die "Not correctly prepended: $NEW_PATH " | [ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin" ] || die "Not correctly prepended: $NEW_PATH " | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # https://github.com/creationix/nvm/issues/1652#issuecomment-342571223 | ||||||
|  | MAC_OS_NESTED_SESSION_PATH=/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin | ||||||
|  |  | ||||||
|  | # New version dir | ||||||
|  | NEW_PATH=`nvm_change_path "$MAC_OS_NESTED_SESSION_PATH" "/bin" "$NVM_DIR/versions/node/v7.1.0"` | ||||||
|  |  | ||||||
|  | [ "$NEW_PATH" = "$NVM_DIR/versions/node/v7.1.0/bin:/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin" ] || die "Not correctly changed: $NEW_PATH " | ||||||
|  |  | ||||||
|  | # Old version dir | ||||||
|  | NEW_PATH=`nvm_change_path "$MAC_OS_NESTED_SESSION_PATH" "/bin" "$NVM_DIR/v0.1.2"` | ||||||
|  |  | ||||||
|  | [ "$NEW_PATH" = "$NVM_DIR/v0.1.2/bin:/usr/bin:/usr/local/bin:$NVM_DIR/versions/node/v4.5.0/bin" ] || die "Not correctly changed: $NEW_PATH " | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user