1.编辑安装脚本
vim install.sh
这里为了防止无法访问到github,这里特地将安装脚本复制过来了
对应网站:raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh
#!/usr/bin/env bash{# this ensures the entire script is downloaded #nvm_has(){type"$1"> /dev/null 2>&1}nvm_echo(){commandprintf %s\\n "$*"2>/dev/null
}nvm_grep(){GREP_OPTIONS=''commandgrep"$@"}nvm_default_install_dir(){[ -z "${XDG_CONFIG_HOME-}"]&&printf %s "${HOME}/.nvm"||printf %s "${XDG_CONFIG_HOME}/nvm"}nvm_install_dir(){if[ -n "$NVM_DIR"];thenprintf %s "${NVM_DIR}"else
nvm_default_install_dir
fi}nvm_latest_version(){
nvm_echo "v0.38.0"}nvm_profile_is_bash_or_zsh(){local TEST_PROFILE
TEST_PROFILE="${1-}"case"${TEST_PROFILE-}"in
*"/.bashrc"| *"/.bash_profile"| *"/.zshrc")return;;
*)return1;;esac}## Outputs the location to NVM depending on:# * The availability of $NVM_SOURCE# * The method used ("script" or "git" in the script, defaults to "git")# NVM_SOURCE always takes precedence unless the method is "script-nvm-exec"#nvm_source(){local NVM_GITHUB_REPO
NVM_GITHUB_REPO="${NVM_INSTALL_GITHUB_REPO:-nvm-sh/nvm}"local NVM_VERSION
NVM_VERSION="${NVM_INSTALL_VERSION:-$(nvm_latest_version)}"local NVM_METHOD
NVM_METHOD="$1"local NVM_SOURCE_URL
NVM_SOURCE_URL="$NVM_SOURCE"if["_$NVM_METHOD"="_script-nvm-exec"];thenNVM_SOURCE_URL="https://raw.githubusercontent.com/${NVM_GITHUB_REPO}/${NVM_VERSION}/nvm-exec"elif["_$NVM_METHOD"="_script-nvm-bash-completion"];thenNVM_SOURCE_URL="https://raw.githubusercontent.com/${NVM_GITHUB_REPO}/${NVM_VERSION}/bash_completion"elif[ -z "$NVM_SOURCE_URL"];thenif["_$NVM_METHOD"="_script"];thenNVM_SOURCE_URL="https://raw.githubusercontent.com/${NVM_GITHUB_REPO}/${NVM_VERSION}/nvm.sh"elif["_$NVM_METHOD"="_git"]||[ -z "$NVM_METHOD"];thenNVM_SOURCE_URL="https://github.com/${NVM_GITHUB_REPO}.git"else
nvm_echo >&2"Unexpected value \"$NVM_METHOD\" for \$NVM_METHOD"return1fifi
nvm_echo "$NVM_SOURCE_URL"}## Node.js version to install#nvm_node_version(){
nvm_echo "$NODE_VERSION"}nvm_download(){if nvm_has "curl";thencurl --fail --compressed -q "$@"elif nvm_has "wget";then# Emulate curl with wgetARGS=$(nvm_echo "$@"|commandsed -e 's/--progress-bar /--progress=bar /'\
-e 's/--compressed //'\
-e 's/--fail //'\
-e 's/-L //'\
-e 's/-I /--server-response /'\
-e 's/-s /-q /'\
-e 's/-sS /-nv /'\
-e 's/-o /-O /'\
-e 's/-C - /-c /')# shellcheck disable=SC2086evalwget$ARGSfi}install_nvm_from_git(){local INSTALL_DIR
INSTALL_DIR="$(nvm_install_dir)"local NVM_VERSION
NVM_VERSION="${NVM_INSTALL_VERSION:-$(nvm_latest_version)}"if[ -n "${NVM_INSTALL_VERSION:-}"];then# Check if version is an existing refifcommandgit ls-remote "$(nvm_source "git")""$NVM_VERSION"| nvm_grep -q "$NVM_VERSION";then:# Check if version is an existing changesetelif! nvm_download -o /dev/null "$(nvm_source "script-nvm-exec")";then
nvm_echo >&2"Failed to find '$NVM_VERSION' version."exit1fifilocal fetch_error
if[ -d "$INSTALL_DIR/.git"];then# Updating repo
nvm_echo "=> nvm is already installed in $INSTALL_DIR, trying to update using git"commandprintf'\r=> 'fetch_error="Failed to update nvm with $NVM_VERSION, run 'git fetch' in $INSTALL_DIR yourself."elsefetch_error="Failed to fetch origin with $NVM_VERSION. Please report this!"
nvm_echo "=> Downloading nvm from git to '$INSTALL_DIR'"commandprintf'\r=> 'mkdir -p "${INSTALL_DIR}"if["$(ls -A "${INSTALL_DIR}")"];then# Initializing repocommandgit init "${INSTALL_DIR}"||{
nvm_echo >&2'Failed to initialize nvm repo. Please report this!'exit2}commandgit --git-dir="${INSTALL_DIR}/.git" remote add origin "$(nvm_source)"2> /dev/null \||commandgit --git-dir="${INSTALL_DIR}/.git" remote set-url origin "$(nvm_source)"||{
nvm_echo >&2'Failed to add remote "origin" (or set the URL). Please report this!'exit2}else# Cloning repocommandgit clone "$(nvm_source)" --depth=1"${INSTALL_DIR}"||{
nvm_echo >&2'Failed to clone nvm repo. Please report this!'exit2}fifi# Try to fetch tagifcommandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" fetch origin tag "$NVM_VERSION" --depth=12>/dev/null;then:# Fetch given versionelif!commandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" fetch origin "$NVM_VERSION" --depth=1;then
nvm_echo >&2"$fetch_error"exit1ficommandgit -c advice.detachedHead=false --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" checkout -f --quiet FETCH_HEAD ||{
nvm_echo >&2"Failed to checkout the given version $NVM_VERSION. Please report this!"exit2}if[ -n "$(commandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" show-ref refs/heads/master)"];thenifcommandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" branch --quiet 2>/dev/null;thencommandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" branch --quiet -D master >/dev/null 2>&1else
nvm_echo >&2"Your version of git is out of date. Please update it!"commandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" branch -D master >/dev/null 2>&1fifi
nvm_echo "=> Compressing and cleaning up git repository"if!commandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" reflog expire --expire=now --all;then
nvm_echo >&2"Your version of git is out of date. Please update it!"fiif!commandgit --git-dir="$INSTALL_DIR"/.git --work-tree="$INSTALL_DIR" gc --auto --aggressive --prune=now ;then
nvm_echo >&2"Your version of git is out of date. Please update it!"fireturn}## Automatically install Node.js#nvm_install_node(){local NODE_VERSION_LOCAL
NODE_VERSION_LOCAL="$(nvm_node_version)"if[ -z "$NODE_VERSION_LOCAL"];thenreturn0fi
nvm_echo "=> Installing Node.js version $NODE_VERSION_LOCAL"
nvm install"$NODE_VERSION_LOCAL"local CURRENT_NVM_NODE
CURRENT_NVM_NODE="$(nvm_version current)"if["$(nvm_version "$NODE_VERSION_LOCAL")"=="$CURRENT_NVM_NODE"];then
nvm_echo "=> Node.js version $NODE_VERSION_LOCAL has been successfully installed"else
nvm_echo >&2"Failed to install Node.js $NODE_VERSION_LOCAL"fi}install_nvm_as_script(){local INSTALL_DIR
INSTALL_DIR="$(nvm_install_dir)"local NVM_SOURCE_LOCAL
NVM_SOURCE_LOCAL="$(nvm_source script)"local NVM_EXEC_SOURCE
NVM_EXEC_SOURCE="$(nvm_source script-nvm-exec)"local NVM_BASH_COMPLETION_SOURCE
NVM_BASH_COMPLETION_SOURCE="$(nvm_source script-nvm-bash-completion)"# Downloading to $INSTALL_DIRmkdir -p "$INSTALL_DIR"if[ -f "$INSTALL_DIR/nvm.sh"];then
nvm_echo "=> nvm is already installed in $INSTALL_DIR, trying to update the script"else
nvm_echo "=> Downloading nvm as script to '$INSTALL_DIR'"fi
nvm_download -s "$NVM_SOURCE_LOCAL" -o "$INSTALL_DIR/nvm.sh"||{
nvm_echo >&2"Failed to download '$NVM_SOURCE_LOCAL'"return1}&
nvm_download -s "$NVM_EXEC_SOURCE" -o "$INSTALL_DIR/nvm-exec"||{
nvm_echo >&2"Failed to download '$NVM_EXEC_SOURCE'"return2}&
nvm_download -s "$NVM_BASH_COMPLETION_SOURCE" -o "$INSTALL_DIR/bash_completion"||{
nvm_echo >&2"Failed to download '$NVM_BASH_COMPLETION_SOURCE'"return2}&forjobin$(jobs -p |commandsort)dowait"$job"||return$?donechmod a+x "$INSTALL_DIR/nvm-exec"||{
nvm_echo >&2"Failed to mark '$INSTALL_DIR/nvm-exec' as executable"return3}}nvm_try_profile(){if[ -z "${1-}"]||[! -f "${1}"];thenreturn1fi
nvm_echo "${1}"}## Detect profile file if not specified as environment variable# (eg: PROFILE=~/.myprofile)# The echo'ed path is guaranteed to be an existing file# Otherwise, an empty string is returned#nvm_detect_profile(){if["${PROFILE-}"='/dev/null'];then# the user has specifically requested NOT to have nvm touch their profilereturnfiif[ -n "${PROFILE}"]&&[ -f "${PROFILE}"];then
nvm_echo "${PROFILE}"returnfilocal DETECTED_PROFILE
DETECTED_PROFILE=''if[ -n "${BASH_VERSION-}"];thenif[ -f "$HOME/.bashrc"];thenDETECTED_PROFILE="$HOME/.bashrc"elif[ -f "$HOME/.bash_profile"];thenDETECTED_PROFILE="$HOME/.bash_profile"fielif[ -n "${ZSH_VERSION-}"];thenDETECTED_PROFILE="$HOME/.zshrc"fiif[ -z "$DETECTED_PROFILE"];thenforEACH_PROFILEin".profile"".bashrc"".bash_profile"".zshrc"doifDETECTED_PROFILE="$(nvm_try_profile "${HOME}/${EACH_PROFILE}")";thenbreakfidonefiif[ -n "$DETECTED_PROFILE"];then
nvm_echo "$DETECTED_PROFILE"fi}## Check whether the user has any globally-installed npm modules in their system# Node, and warn them if so.#nvm_check_global_modules(){local NPM_COMMAND
NPM_COMMAND="$(command -v npm2>/dev/null)"||return0[ -n "${NVM_DIR}"]&&[ -z "${NPM_COMMAND%%$NVM_DIR/*}"]&&return0local NPM_VERSION
NPM_VERSION="$(npm --version)"NPM_VERSION="${NPM_VERSION:--1}"["${NPM_VERSION%%[!-0-9]*}" -gt 0]||return0local NPM_GLOBAL_MODULES
NPM_GLOBAL_MODULES="$(npm list -g --depth=0|commandsed -e '/ npm@/d' -e '/ (empty)$/d')"local MODULE_COUNT
MODULE_COUNT="$(commandprintf %s\\n "$NPM_GLOBAL_MODULES"|commandsed -ne '1!p'|# Remove the first linewc -l |commandtr -d ' '# Count entries)"if["${MODULE_COUNT}"!='0'];then# shellcheck disable=SC2016
nvm_echo '=> You currently have modules installed globally with `npm`. These will no'# shellcheck disable=SC2016
nvm_echo '=> longer be linked to the active version of Node when you install a new node'# shellcheck disable=SC2016
nvm_echo '=> with `nvm`; and they may (depending on how you construct your `$PATH`)'# shellcheck disable=SC2016
nvm_echo '=> override the binaries of modules installed with `nvm`:'
nvm_echo
commandprintf %s\\n "$NPM_GLOBAL_MODULES"
nvm_echo '=> If you wish to uninstall them at a later point (or re-install them under your'# shellcheck disable=SC2016
nvm_echo '=> `nvm` Nodes), you can remove them from the system Node as follows:'
nvm_echo
nvm_echo ' $ nvm use system'
nvm_echo ' $ npm uninstall -g a_module'
nvm_echo
fi}nvm_do_install(){if[ -n "${NVM_DIR-}"]&&![ -d "${NVM_DIR}"];thenif[ -e "${NVM_DIR}"];then
nvm_echo >&2"File \"${NVM_DIR}\" has the same name as installation directory."exit1fiif["${NVM_DIR}"="$(nvm_default_install_dir)"];thenmkdir"${NVM_DIR}"else
nvm_echo >&2"You have \$NVM_DIR set to \"${NVM_DIR}\", but that directory does not exist. Check your profile files and environment."exit1fifiif[ -z "${METHOD}"];then# Autodetect install methodif nvm_has git;then
install_nvm_from_git
elif nvm_has nvm_download;then
install_nvm_as_script
else
nvm_echo >&2'You need git, curl, or wget to install nvm'exit1fielif["${METHOD}"='git'];thenif! nvm_has git;then
nvm_echo >&2"You need git to install nvm"exit1fi
install_nvm_from_git
elif["${METHOD}"='script'];thenif! nvm_has nvm_download;then
nvm_echo >&2"You need curl or wget to install nvm"exit1fi
install_nvm_as_script
else
nvm_echo >&2"The environment variable \$METHOD is set to \"${METHOD}\", which is not recognized as a valid installation method."exit1fi
nvm_echo
local NVM_PROFILE
NVM_PROFILE="$(nvm_detect_profile)"local PROFILE_INSTALL_DIR
PROFILE_INSTALL_DIR="$(nvm_install_dir |commandsed"s:^$HOME:\$HOME:")"SOURCE_STR="\\nexport NVM_DIR=\"${PROFILE_INSTALL_DIR}\"\\n[ -s \"\$NVM_DIR/nvm.sh\" ] && \\. \"\$NVM_DIR/nvm.sh\" # This loads nvm\\n"# shellcheck disable=SC2016COMPLETION_STR='[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion\n'BASH_OR_ZSH=false
if[ -z "${NVM_PROFILE-}"];thenlocal TRIED_PROFILE
if[ -n "${PROFILE}"];thenTRIED_PROFILE="${NVM_PROFILE} (as defined in \$PROFILE), "fi
nvm_echo "=> Profile not found. Tried ${TRIED_PROFILE-}~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile."
nvm_echo "=> Create one of them and run this script again"
nvm_echo " OR"
nvm_echo "=> Append the following lines to the correct file yourself:"commandprintf"${SOURCE_STR}"
nvm_echo
elseif nvm_profile_is_bash_or_zsh "${NVM_PROFILE-}";thenBASH_OR_ZSH=true
fiif!commandgrep -qc '/nvm.sh'"$NVM_PROFILE";then
nvm_echo "=> Appending nvm source string to $NVM_PROFILE"commandprintf"${SOURCE_STR}">>"$NVM_PROFILE"else
nvm_echo "=> nvm source string already in ${NVM_PROFILE}"fi# shellcheck disable=SC2016if${BASH_OR_ZSH}&&!commandgrep -qc '$NVM_DIR/bash_completion'"$NVM_PROFILE";then
nvm_echo "=> Appending bash_completion source string to $NVM_PROFILE"commandprintf"$COMPLETION_STR">>"$NVM_PROFILE"else
nvm_echo "=> bash_completion source string already in ${NVM_PROFILE}"fifiif${BASH_OR_ZSH}&&[ -z "${NVM_PROFILE-}"];then
nvm_echo "=> Please also append the following lines to the if you are using bash/zsh shell:"commandprintf"${COMPLETION_STR}"fi# Source nvm# shellcheck source=/dev/null\. "$(nvm_install_dir)/nvm.sh"
nvm_check_global_modules
nvm_install_node
nvm_reset
nvm_echo "=> Close and reopen your terminal to start using nvm or run the following to use it now:"commandprintf"${SOURCE_STR}"if${BASH_OR_ZSH};thencommandprintf"${COMPLETION_STR}"fi}## Unsets the various functions defined# during the execution of the install script#nvm_reset(){unset -f nvm_has nvm_install_dir nvm_latest_version nvm_profile_is_bash_or_zsh \
nvm_source nvm_node_version nvm_download install_nvm_from_git nvm_install_node \
install_nvm_as_script nvm_try_profile nvm_detect_profile nvm_check_global_modules \
nvm_do_install nvm_reset nvm_default_install_dir nvm_grep
}["_$NVM_ENV"="_testing"]|| nvm_do_install
}# this ensures the entire script is downloaded #
2.添加执行权限
chmod +x install.sh
3.执行脚本
./install.sh
4.查询脚本
安装安装后,可能需要重置一下bash
source ~/.bashrc
查询nvm是否安装成功
nvm --version
5.查询当前可用的node版本
nvm ls-remote
6.安装版本
选择你需要安装的版本
nvm install<version>
7.查询node是否安装成功
node --version
本文转载自: https://blog.csdn.net/qq_22841387/article/details/130302631
版权归原作者 修炼室 所有, 如有侵权,请联系我们删除。
版权归原作者 修炼室 所有, 如有侵权,请联系我们删除。