J'essaye d'appeler une installation de node.js sur un serveur distant exécutant Ubuntu via SSH. Le noeud a été installé via nvm.node.js indisponible via ssh
et l'exécution de ssh nœud appelant fonctionne très bien:
[email protected]:~$ ssh [email protected]
(Server welcome text)
[email protected]:~$ which node
/home/user/.nvm/v0.10.00/bin/node
Toutefois, si je le combine en une seule ligne:
[email protected]:~$ ssh [email protected] "which ls"
/bin/ls
[email protected]:~$ ssh [email protected] "which node"
Aucun signe de noeud, alors j'ai essayé approvisionnement .bashrc et attendre 10 secondes:
[email protected]:~$ ssh [email protected] "source ~/.bashrc; sleep 10; which node"
Seul le nœud semble affecté par ceci. Une chose que j'ai remarquée, c'est que si je ssh et que je vérifie la coque dans laquelle je suis, elle dit -bash
alors que si je la ssh directe, elle me donne /bin/bash
. J'ai essayé d'exécuter les commandes à l'intérieur d'un shell de connexion bash:
[email protected]:~$ ssh [email protected] 'bash --login -c "which node"'
Toujours rien.
Fondamentalement, ma question est: Pourquoi bash ne trouve-t-il pas mon installation de node.js quand je l'appelle de manière non interactive depuis SSH?
J'ai couru comme @ ssh utilisateur -t remoteserver « qui noeud », mais cela ne fonctionne toujours pas trouve le. L'ajout de RequestTTY au fichier .ssh/config semble n'avoir aucun effet non plus. – TDN169
J'ai aussi essayé ssh -t utilisateur @ remoteserver "bash --rcfile ~/.bashrc -c 'quel noeud' 'qui ne semble pas avoir d'effet. – TDN169
Je viens d'essayer: ssh -t utilisateur @ remoteserver 'export NVM_DIR = "/ home/user/.nvm"; [-s "$ NVM_DIR/nvm.sh"] &&. "$ NVM_DIR/nvm.sh"; quel noeud 'et ça marche! – TDN169