gpt4 book ai didi

node.js - 为什么 nvm 命令以 root 身份安装,但在 vagrant bootstrap.sh 期间也找不到?

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:04 28 4
gpt4 key购买 nike

当我尝试安装 nvm 并测试它是否安装在我的 vagrant shell 配置脚本中时,使用:

sudo wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash
source ~/.bashrc
nvm

我得到:

==> default: => Downloading nvm as script to '/root/.nvm'
==> default: => Appending source string to /root/.bashrc
==> default: => You can now install Node.js by running `nvm install`
==> default: /tmp/vagrant-shell: line 7: nvm: command not found

首先我不希望它以 root 身份安装,我想以 vagrant 用户身份在/home/vagrant 中安装它以避免权限问题。

第二,为什么在我运行 source .bashrc 时找不到命令,如此处的 nvm 安装说明中所述 https://github.com/creationix/nvm

我现在正在添加一个解决方案。

最佳答案

所以首先,如果你想在 bootstrap.sh 脚本期间以 vagrant 用户身份安装 somethnig,最简单的方法是将另一个配置脚本添加到以非特权模式运行的 Vagrantfile:

config.vm.provision "ScriptRunAsRoot", type:"shell", path: "Vagrantdata/rootUserBootstrap.sh"
config.vm.provision "ScriptRunAsVagrantUser", privileged: false, type:"shell", path: "Vagrantdata/vagrantUserBootstrap.sh"

然后要在这种情况下获取 nvm 命令,您必须确保直接运行 nvm.sh 脚本,即不是通过 nvm 安装说明中所述的 .bashrc 文件。这是因为 .bashrc 有一行如果在非交互式 shell 中运行会提前退出,我猜 vagrant 就是这样。来自 .bashrc:

# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac

因此,您需要:

而不是 source ~/.bashrc
source ~/.nvm/nvm.sh

关于node.js - 为什么 nvm 命令以 root 身份安装,但在 vagrant bootstrap.sh 期间也找不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com