"Comando no encontrado" cuando se ejecuta "lessc" desde bash

12

He instalado a lessctravés de npmNode.js Package Manager, y cuando ejecuto lesscdesde la terminal usando

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

Funciona perfectamente.
Sin embargo, cuando pongo exactamente el mismo comando en un script bash less.sh, devuelve el error

lessc : command not found.

Además, necesito ejecutar este comando desde un script bash, porque incron, un programa que estoy usando para volver a compilar mi script menos cada vez que se modifican, no puede ejecutar el comando mencionado anteriormente, que creo que puede ser causado por métodos extraños para manejar espacios en blanco en el comando.

Jerga
fuente
El script que no funciona se ejecuta en el mismo terminal donde lesscfunciona, o de alguna otra manera (cron, un lanzador, Alt-F2, otro).
enzotib
Hay un retroceso al final de su comando. ¿Es este error tipográfico solo aquí o también está en su less.sh?
elmicha
Sí, el backtick fue un error tipográfico. @enzotib ¿Importa desde dónde se ejecuta el script, y cambiaría algo que pueda causar el error mencionado anteriormente?
argot
Si importa. En diferentes situaciones, puede tener diferentes RUTA.
enzotib
Gracias, después de investigar la variable $ PATH, descubrí que lessc estaba en "/ opt / lessc / bin / lessc", que debía agregarse a $ PATH.
argot

Respuestas:

7

¿Dónde está el ejecutable "lessc"? Hacer:

type -p lessc

y tome nota del directorio, y descubra dónde se agrega ese directorio a su RUTA. Creo que bash e incron no obtienen sus archivos de configuración (.bashrc, etc.) de la misma manera. Al leer la página de manual de Bash, la sección INVOCACIÓN describe cómo bash encuentra sus archivos de inicio. Un vistazo rápido a la fuente de incron muestra que no menciona .bashrc o .bash_profile.

Puede cambiar el comando "lessc" en su script a:

/actual/path/to/lessc

que encontraste a través de

type -p lessc
Waltinator
fuente
O agregue "/ actual / path / to / lessc /" a $ PATH, utilizando el comando "PATH = $ PATH: / actual / path / to / lessc /" en el archivo bash. Y gracias por publicar eso como respuesta (no como comentario).
argot
21
npm install -g less

Eso instala Less.js a nivel mundial. Quizás ya lo haya intentado pero no está en la documentación en http://lesscss.org/ ; Tuve que preguntar en # node.js en FreeNode.

Brian Lacy
fuente
Ejecuté su comando en mi terminal de ubuntu pero obtuve npm ERR. Negarse a eliminar: / usr / bin / lessc no está en / usr / lib / node_modules / less El archivo existe: / usr / bin / lessc Aléjelo e intente nuevamente. npm ERR! Sistema Linux 3.2.0-90-generic-pae npm ERR! comando "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "less" npm ERR! cwd / home / mejor npm ERR! nodo -v v0.10.40 npm ERR! npm -v 1.4.28 npm ERR! ruta / usr / bin / lessc npm ERR! código EEXIST npm ERR! no está bien código 0
DaSaDiYa ChaiTAnYa
0

en 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
fuente