You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

nvm在bash shell可用但sh shell不可用,Jenkins Docker代理报‘nvm未找到’

解决Jenkins Docker代理中sh环境找不到nvm的问题

问题原因

nvm安装脚本默认会把初始化代码写入~/.bashrc,这个文件仅交互式bash shell启动时才会加载。而Jenkins默认用非交互式的sh(或bash)执行任务,sh本身不会读取~/.bashrc,因此会出现nvm: command not found的错误。


解决方案

方案1:修改Dockerfile让nvm全局可用

调整RUN命令,把nvm的初始化逻辑写入全局配置文件,确保所有shell(包括sh)启动时自动加载:

RUN curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.39.1/install.sh | bash - \
    && echo '[ -s "$HOME/.nvm/nvm.sh" ] && . "$HOME/.nvm/nvm.sh"' > /etc/profile.d/nvm.sh \
    && chmod +x /etc/profile.d/nvm.sh \
    && . $HOME/.nvm/nvm.sh \
    && nvm install 18 \
    && nvm install 16 \
    && nvm install 14 \
    && nvm alias default 14

注意:删除原命令中chmod -R 777 /bin/,这会给所有系统命令添加可写权限,存在严重安全风险且完全没必要。

方案2:在Jenkins任务中手动加载nvm

如果不想修改Dockerfile,在Jenkins的sh脚本开头手动加载nvm初始化文件:

. $HOME/.nvm/nvm.sh
nvm use 14
node -v

方案3:指定Jenkins用bash执行任务

在Jenkins任务配置中强制使用bash解释器:

  • 在「Execute shell」步骤的第一行添加#!/bin/bash
  • 或在Jenkins全局配置中,将「Shell executable」修改为/bin/bash

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:17:09