«Commande introuvable» lors de l'exécution de «lessc» à partir de bash

12

J'ai installé lesscvia npm, Node.js Package Manager, et lorsque je cours à lesscpartir du terminal en utilisant

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

cela fonctionne parfaitement.
Cependant, lorsque je mets cette même commande exacte dans un script bash less.sh, elle renvoie l'erreur

lessc : command not found.

De plus, je dois exécuter cette commande à partir d'un script bash, car incron, un programme que j'utilise pour recompiler mon script less à chaque fois qu'il est modifié, ne peut pas exécuter la commande mentionnée ci-dessus, ce qui, je pense, peut être dû à méthodes étranges pour gérer les espaces blancs dans la commande.

argot
la source
Le script ne fonctionne pas est exécuté dans le même terminal où lesscfonctionne, ou d'une autre manière (cron, un lanceur, Alt-F2, autre)?
enzotib
Il y a un backtick à la fin de votre commande. Est-ce une faute de frappe seulement ici ou est-ce aussi dans votre less.sh?
elmicha
oui le backtick était une faute de frappe. @enzotib importe-t-il d'où le script est exécuté, et cela changerait-il tout ce qui pourrait provoquer l'erreur mentionnée ci-dessus?
argot
Oui, c'est important. Dans différentes situations, vous pouvez avoir différents CHEMINS.
enzotib
Merci, après avoir recherché la variable $ PATH, j'ai trouvé que lessc était dans "/ opt / lessc / bin / lessc", qui devait être ajouté à $ PATH.
argot

Réponses:

7

Où est l'exécutable "lessc"? Faire:

type -p lessc

et prenez note du répertoire, et déterminez où ce répertoire est ajouté à votre PATH. Je pense que bash et incron ne source pas vos fichiers d'installation (.bashrc, etc.) de la même manière. En lisant la page de manuel de Bash, la section INVOCATION décrit comment bash trouve ses fichiers de démarrage. Un rapide grep à travers la source incron montre qu'elle ne mentionne pas .bashrc ou .bash_profile.

Vous pouvez changer la commande "lessc" dans votre script pour:

/actual/path/to/lessc

que vous avez trouvé via

type -p lessc
waltinator
la source
Ou ajoutez "/ actual / path / to / lessc /" à $ PATH, en utilisant la commande "PATH = $ PATH: / actual / path / to / lessc /" dans le fichier bash. Et merci d'avoir posté cela comme une réponse (pas un commentaire).
argot
21
npm install -g less

Cela installe Less.js à l'échelle mondiale. Vous l'avez peut-être déjà essayé, mais ce n'est pas dans la documentation sur http://lesscss.org/ ; J'ai dû demander autour de # node.js sur FreeNode.

Brian Lacy
la source
J'exécute votre commande dans mon terminal ubuntu mais j'ai eu npm ERR! Refus de supprimer: / usr / bin / lessc pas dans / usr / lib / node_modules / less Le fichier existe: / usr / bin / lessc Éloignez-le et réessayez. npm ERR! Système Linux 3.2.0-90-generic-pae npm ERR! commande "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "moins" npm ERR! cwd / home / best npm ERR! node -v v0.10.40 npm ERR! npm -v 1.4.28 npm ERR! chemin / usr / bin / lessc npm ERR! code EEXIST npm ERR! code non ok 0
DaSaDiYa ChaiTAnYa
0

à 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
la source