我正在一个脚本中执行此操作.sh
,调用方式如下sudo ./script.sh
:
user=${SUDO_USER} # ="alex"
sudo -su ${user} node
结果:
/bin/bash: node: command not found
其他命令也一样,例如,yarn
或nvm
所有命令在以以下身份登录时都已安装并运行alex
我究竟做错了什么?
which node
运行alex
结果如下:
/home/alex/.nvm/versions/node/v10.15.1/bin/node
node
安装alex
使用将其添加到(正在使用)nvm
的末尾/home/alex/.zshrc
alex
zsh
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
答案1
我认为没有名为 node 的用户。试试这个
cat /etc/passwd | grep node
如果它打印节点,则说明有效
user=${SUDO_USER}
sudo -su ${user} node
如果不创建名为节点的用户,则像这样
adduser node
user=${SUDO_USER}
sudo -su ${user} node
最后你的 scripts.sh 就可以运行了。