bash -c nvm funktioniert nicht

bash -c nvm funktioniert nicht

Ich habe es installiert nvmund es wurde angehängt an meine/home/www-data/.bashrc

Anrufen nvmfunktioniert.

bash
nvm

Werke

Aber

$ bash -c nvm
bash: nvm: command not found

funktioniert nicht.

dasselbe, wenn ich die RC-Datei spezifiziere

$ bash  --rcfile /home/www-data/.bashrc -c "nvm"
bash: nvm: command not found

Warum das?

Im Endergebnis möchte ich nvm im RoboFile exec()-Befehl verwenden und habe versucht, es einzubinden, bash -cda nvmes sich um eine Bash-Funktion und nicht um ein echtes Skript handelt.

Antwort1

Warum das?

Wenn bash mit aufgerufen -cwird, läuft es alsnicht interaktivShell. Die standardmäßigen Startdateien der interaktiven Shell ( /etc/bash.bashrc, ~/.bashrc) werden nicht gelesen. Selbst wenn Sie ~/.bashrcdas Lesen erzwingen, wird der Hauptteil wahrscheinlich nicht ausgeführt - der Standard-Ubuntu-Start (der bei der Kontoerstellung aus /etc/skel kopiert wurde) enthält beispielsweise die Zeilen

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

wodurch alles Folgende umgangen wird.

Dukönnteerzwingen Sie eine interaktive Shell mithilfe von bash -ic. Dies kann jedoch, abhängig von den sonstigen Inhalten Ihres , zu anderen Problemen führen .bashrc.

Antwort2

Versuchen

bash -ic nvm

Ausführen von Bash als interaktive ShellUndDie Bereitstellung eines Befehls scheint nicht der Bash-Dokumentation zu entsprechen, funktioniert aber.

Antwort3

Ich wechselte zuhttps://www.npmjs.com/package/nwas in diesem Fall viel besser funktioniert.

Es ist eine Alternative zu nvmund benötigt nicht all diese Bash-Skripte. Deshalb funktioniert es wahrscheinlich auch ohne die oben genannten Probleme.

nkann mit dem folgenden Befehl installiert werden:

npm install -g n

verwandte Informationen