我试图在 .bashrc 文件中创建一个函数,以便每次使用“nvm use”时更改符号链接。
change_sl() {
local version="$1"
ln -sf "$NVM_DIR/versions/node/$version/bin/node" /usr/bin/node
}
nvm() {
if ["$1" = "use" ]; then
local version="$2"
command nvm "$1" "$version"
change_sl "$(node -v)"
else
command nvm "$@"
fi
}
但我有这个错误:未找到命令“nvm”,但有 13 个类似的。
我对 bash 还很陌生,所以如果有人能帮助我,那就太好了。
NVM 本身是一个 shell 函数而不是外部可执行文件。因此,您无法使用
nvm
调用 command
。引用 command
内置文档:
运行
,并使用command
抑制正常的 shell 函数查找。仅执行内置命令或在args
中找到的命令。PATH
由于 Bash 也不支持继承或超级调用,因此您首先必须使用不同的名称创建原始
nvm
函数的副本,以便可以直接调用它,例如
eval "$(echo "nvm_orig()"; declare -f nvm | tail -n +2)"
function nvm() {
nvm_orig "$@"
if [ "$1" = "use" ]; then
change_sl "$(node -v)"
fi
}
Evan Broder展示了以不同名称创建函数副本的技术。