Sto provando a chiamare un'installazione di node.js su un server remoto che esegue Ubuntu tramite SSH. Il nodo è stato installato tramite nvm.node.js non disponibile via ssh
SSHing e nodo chiamando funziona bene:
[email protected]:~$ ssh [email protected]
(Server welcome text)
[email protected]:~$ which node
/home/user/.nvm/v0.10.00/bin/node
Tuttavia, se combino in una riga:
[email protected]:~$ ssh [email protected] "which ls"
/bin/ls
[email protected]:~$ ssh [email protected] "which node"
Nessun segno di nodo, così ho cercato di sourcing .bashrc e in attesa 10 secondi:
[email protected]:~$ ssh [email protected] "source ~/.bashrc; sleep 10; which node"
Solo il nodo sembra interessato da questo. Una cosa che ho notato è che se mi ssh in e quindi controllare quale shell sono dentro dice -bash
mentre se ho ssh direct mi dà /bin/bash
. Ho provato a eseguire i comandi all'interno di una shell di login bash:
[email protected]:~$ ssh [email protected] 'bash --login -c "which node"'
Ancora niente.
Fondamentalmente la mia domanda è: Perché non è bash trovare l'installazione node.js quando la chiamo in modo non interattivo da SSH?
ho eseguito come utente ssh -t @ remoteserver "quale nodo", ma ancora non lo fa Trovalo. L'aggiunta di RequestTTY al file .ssh/config sembra non avere alcun effetto. – TDN169
Ho anche provato ssh -t utente @ remoteserver "bash --rcfile ~/.bashrc -c" quale nodo "" che non sembra avere un effetto. – TDN169
Ho appena provato: ssh -t utente @ remoteserver 'export NVM_DIR = "/ home/utente/.nvm"; [-s "$ NVM_DIR/nvm.sh"] &&. "$ NVM_DIR/nvm.sh"; quale nodo 'e funziona! – TDN169