shell 无法从bash脚本使用nvm

afdcj2ne  于 2023-06-06  发布在  Shell
关注(0)|答案(6)|浏览(367)

我正在尝试写一个shell脚本来自动化我的开发环境设置(安装python,nvm,node,mongo等)。我正在使用nvm安装Node。它告诉您关闭并重新打开终端以开始使用nmv命令。我尝试源.bashrc和.profile,使命令立即可用,这样我就可以继续运行脚本与nvm安装,但它不工作。
以下是我的脚本中与安装NVM / Node相关的部分:

#install nvm and latest node version
# sourcing profile and bashrc is not working here. nvm does not execute the next two lines to install node.

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
source ~/.profile
source ~/.bashrc
nvm install 5.0
nvm alias default node

我得到这些消息,但请注意,我已经运行了脚本和NVM /节点已经安装和工作。我还可以在脚本完成后在运行脚本的同一个终端中使用nvm和node。只是剧本里没有。

=> Downloading nvm from git to '/home/myDir/.nvm'
=> fatal: destination path '/home/myDir/.nvm' already exists and is not an empty directory.
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git

=> Source string already in /home/myDir/.bashrc
=> Close and reopen your terminal to start using nvm
./install-programs.sh: line 27: nvm: command not found
./install-programs.sh: line 28: nvm: command not found
i7uq4tfw

i7uq4tfw1#

如果你有nvm运行在主shell上,你只需要添加:

export NVM_DIR=$HOME/.nvm;
source $NVM_DIR/nvm.sh;

在你的剧本里

6bc51xsx

6bc51xsx2#

这就是我的工作。
首先使用SSH或控制台安装nvm(单独安装一次):

$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash

然后在您的脚本中,加载您的配置文件如下:

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc

幸运的话,nvm应该可以在脚本中使用。

nvm install 4.4.2

Tada!

6pp0gazn

6pp0gazn3#

把这个放在你的剧本上面:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

在这里就像一个魅力。

vulvrdjw

vulvrdjw4#

这个脚本对我来说很好:

#!/usr/bin/env bash

if [ ! -d ~/.nvm ]; then

  curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
  source ~/.nvm/nvm.sh
  source ~/.profile
  source ~/.bashrc
  nvm install 5.0
  npm install
  npm run front
fi
yeotifhr

yeotifhr5#

现在,你可以简单地这样做:
env NODE_VERSION=<dd> /home/<user>/.nvm/nvm-exec npm run front
简单地搜索nvm.sh对我不起作用(从systemd.service文件),PATH不包括~/.nvm...
信用证到期时的信用证:https://gist.github.com/joepie91/73ce30dd258296bd24af23e9c5f761aa#gistcomment-2215867

o8x7eapl

o8x7eapl6#

确保NVM安装在服务器/您的机器中按照以下格式修改您的shell脚本,我们使用的shell脚本在客户端和服务器中使用两个不同的节点版本。请检查这是否适用于您?

echo "Removing build files..";
rm -rf server/public/build
echo "Generating New Build....";
source $NVM_DIR/nvm.sh;
cd client
nvm use 14.16.1;
echo "Building Application";
npm install --legacy-peer-deps;
npm run build
echo "Building App Ends";
cd ..
nvm use 16.13.0;
npm install --legacy-peer-deps

相关问题