把nvm的path配置在哪,才能在Docker exec 非登录shell下生效?
时间: 2024-09-10 21:25:12 浏览: 35
在Docker exec进入非登录shell环境时,你可能需要手动设置环境变量,因为Docker容器启动时通常不会加载宿主机的环境变量,除非你明确地在容器内进行了设置。为了使nvm(Node Version Manager)的path在Docker exec非登录shell下生效,你可以采取以下步骤:
1. 确保你的Dockerfile中包含了安装nvm的指令,或者在运行容器时通过docker run或docker exec命令进入容器后手动安装nvm。
2. 在你的Docker容器内,你需要手动运行nvm的初始化脚本,通常这个脚本在`.bashrc`、`.zshrc`或者其他shell的配置文件中,但是因为是非登录shell,你需要直接执行这个初始化脚本来设置环境变量。
```bash
source ~/.nvm/nvm.sh
```
3. 如果你在Docker容器中使用的是非交互式shell,比如直接运行了一个命令而不是启动一个交互式的shell会话,那么你可能需要在执行该命令之前设置环境变量。可以通过在docker exec命令后直接调用nvm的初始化脚本来完成:
```bash
docker exec -it <container-name> /bin/bash -c 'source ~/.nvm/nvm.sh; node -v'
```
在这个例子中,`<container-name>`是你容器的名称,`/bin/bash -c`是调用bash并执行后面的命令,`source ~/.nvm/nvm.sh`加载nvm,`node -v`是你想要执行的命令。
注意,如果容器中没有安装bash,你可能需要调整上述命令以适应实际使用的shell。