Quando executo which node
o comando funciona, mas se eu executo su - username -s /bin/bash -c 'which node'
ele retorna vazio. Eu tentei de tudo sob o sol e não consigo fazer funcionar.
Eu até tenteisu - username -s /bin/bash -c 'source ~/.bashrc ; which node'
root@vps-151c25b9:~# which node
/root/.nvm/versions/node/v20.18.0/bin/node
root@vps-151c25b9:~# su - username -s /bin/bash -c 'which node'
root@vps-151c25b9:~#
root@vps-151c25b9:~# su - username -s /bin/bash
username@vps-151c25b9:~$ which node
/home/username/.nvm/versions/node/v20.18.0/bin/node
username@vps-151c25b9:~$
O que estou fazendo errado? Por que o node não aparece quando executado com su ?
Editar: Acabei de perceber que quando corro
su - username -s /bin/bash -c "echo $PATH"
Eu pego o caminho de root
, não do usuário username
. Embora root
também tenha nvm
& node
e ele também não encontra isso.
Edição 2: Tentei usar aspas simples para que não expandisse $PATH
e obtive o caminho correto, incluindo o diretório nvm:
su username -c 'echo $PATH'
mas quando eu tento
su username -c 'source ~/.bashrc ; which node'
ainda está vazio.
Edição 3: Eu tentei
su username -c '. ~/.profile ; which which'
(risos) e ele retornou /usr/bin/which
, então o comando funciona, só não para o node.
Resposta: Eu executei o seguinte e funcionou! Eu tive que carregar o NVM manualmente.
root@vps-151c25b9:~# su - username -c 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" ; [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" ; which node'
/home/username/.nvm/versions/node/v20.18.0/bin/node
Obrigado a todos pela ajuda :)