我尝试以nvm
与 bash 脚本不同的用户身份运行。它已经安装并且NVM_DIR
环境变量设置在/home/user/.bashrc
:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
使用普通su
作品:
root@ubuntu:~# su user
user@:/root$ echo $NVM_DIR
/home/user/.nvm
尝试同样的事情su -c
是行不通的:
root@ubuntu:~# su user -c 'echo $NVM_DIR'
root@ubuntu:~#
如何使用环境变量su -c
?
您观察到的行为是因为
su -c 'command'
不在command
交互式 shell 中执行。由于
su
似乎没有提供这样做的选项,可能最干净的方式来做你想做的事情是将 NVM 环境变量移动到一个单独的文件中,称为nvm_envs
say 和明确的来源,例如如果您希望交互式 bash shell 具有相同的环境,请从您的文件中获取相同的文件,
.bashrc
例如(这正是默认
.profile
文件有条件地获取用户env_vars
文件的方式:如果您愿意,可以使用该文件。)尝试: