"Befehl nicht gefunden", wenn "lessc" von bash ausgeführt wird

12

Ich habe lesscüber npmNode.js Package Manager installiert und wenn ich lesscvom Terminal aus mit verwende

lessc /var/www/less/style.less /var/www/css/style.css

es funktioniert perfekt.
Wenn ich jedoch genau denselben Befehl in ein Bash-Skript einfüge, less.shwird der Fehler zurückgegeben

lessc : command not found.

Außerdem muss ich diesen Befehl über ein Bash-Skript ausführen, da incronein Programm, mit dem ich mein weniger Skript bei jeder Änderung neu kompiliere, den oben genannten Befehl nicht ausführen kann, was meines Erachtens darauf zurückzuführen ist seltsame Methoden für den Umgang mit Leerzeichen im Befehl.

Slang
quelle
Das nicht funktionierende Skript wird auf demselben Terminal ausgeführt, auf dem es lesscfunktioniert, oder auf andere Weise (cron, ein Launcher, Alt-F2 usw.).
Enzotib
Am Ende Ihres Befehls befindet sich ein Backtick. Ist dieser Tippfehler nur hier oder auch in Ihrer less.sh?
Elmicha
Ja, der Backtick war ein Tippfehler. @enzotib spielt es eine Rolle, von wo aus das Skript ausgeführt wird, und würde es irgendetwas ändern, das den oben genannten Fehler verursachen könnte?
Slang
Ja, das ist wichtig. In verschiedenen Situationen können Sie verschiedene Pfade haben.
Enzotib
Vielen Dank, nachdem ich die Variable $ PATH untersucht hatte, stellte ich fest, dass sich lessc in "/ opt / lessc / bin / lessc" befand, das zu $ ​​PATH hinzugefügt werden musste.
Slang

Antworten:

7

Wo ist die ausführbare Datei "lessc"? Tun:

type -p lessc

Notieren Sie sich das Verzeichnis und finden Sie heraus, wo dieses Verzeichnis Ihrem PATH hinzugefügt wird. Ich denke, dass Bash und Incron Ihre Setup-Dateien (.bashrc usw.) nicht auf die gleiche Weise beziehen. Beim Lesen der Bash-Manpage beschreibt der Abschnitt INVOCATION, wie bash seine Startdateien findet. Ein kurzer Blick durch die Incron-Quelle zeigt, dass .bashrc oder .bash_profile nicht erwähnt werden.

Sie können den Befehl "lessc" in Ihrem Skript in Folgendes ändern:

/actual/path/to/lessc

das hast du über gefunden

type -p lessc
Walzer
quelle
Oder fügen Sie $ PATH das "/ actual / path / to / lessc /" hinzu, indem Sie den Befehl "PATH = $ PATH: / actual / path / to / lessc /" in der Bash-Datei verwenden. Und danke, dass du das als Antwort gepostet hast (kein Kommentar).
Slang
21
npm install -g less

Dadurch wird Less.js global installiert. Vielleicht haben Sie dies bereits versucht, aber es ist nicht in der Dokumentation auf http://lesscss.org/ enthalten . Ich musste in # node.js auf FreeNode nachfragen.

Brian Lacy
quelle
Ich führe Ihren Befehl in meinem Ubuntu-Terminal aus, habe aber npm ERR! Weigert sich zu löschen: / usr / bin / lessc nicht in / usr / lib / node_modules / less Datei vorhanden: / usr / bin / lessc Verschieben Sie sie weg und versuchen Sie es erneut. npm ERR! System Linux 3.2.0-90-generic-pae npm ERR! Befehl "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "less" npm ERR! cwd / home / best npm ERR! Knoten -v v0.10.40 npm ERR! npm -v 1.4.28 npm ERR! Pfad / usr / bin / lessc npm ERR! Code EEXIST npm ERR! nicht ok Code 0
DaSaDiYa ChaiTAnYa
0

in lubuntu:

$ type -p lessc
$ lessc
El programa «lessc» no está instalado. Puede instalarlo escribiendo:
sudo apt-get install node-less
$ sudo apt-get install node-less
Enrique San Martín
quelle