„Polecenie nie znaleziono” podczas uruchamiania „lessc” z bash

12

Zainstalowałem lesscprzez npmNode.js Package Manager, a kiedy uruchamiam lesscz terminala za pomocą

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

działa idealnie.
Jednak po umieszczeniu tego samego polecenia w skrypcie bash less.shzwraca błąd

lessc : command not found.

Ponadto muszę uruchomić to polecenie ze skryptu bash, ponieważ incronprogram, którego używam do ponownej kompilacji mojego mniejszego skryptu za każdym razem, gdy są modyfikowane, nie jest w stanie uruchomić wyżej wymienionego polecenia, które, jak sądzę, może być spowodowane dziwne metody obsługi białych znaków w poleceniu.

gwara
źródło
Niedziałający skrypt jest uruchamiany w tym samym terminalu, w którym lesscdziała, lub na inne sposoby (cron, launcher, Alt-F2, inne)?
enzotib
Na końcu twojego polecenia znajduje się strzałka wsteczna. Czy ta literówka jest tylko tutaj, czy też jest w twoim less.sh?
elmicha
tak, backtick był literówką. @enzotib, czy ma to znaczenie, z którego skryptu jest uruchamiany, i czy zmieniłoby cokolwiek, co mogłoby spowodować błąd wspomniany powyżej?
slang
Tak, to ma znaczenie. W innej sytuacji możesz mieć różne ŚCIEŻKI.
enzotib
Dzięki, po zbadaniu zmiennej $ PATH odkryłem, że lessc znajduje się w „/ opt / lessc / bin / lessc”, którą należało dodać do $ PATH.
slang

Odpowiedzi:

7

Gdzie jest plik wykonywalny „lessc”? Robić:

type -p lessc

i zanotuj katalog, i dowiedz się, gdzie ten katalog jest dodany do twojej ŚCIEŻKI. Myślę, że bash i incron nie źródłują plików instalacyjnych (.bashrc itp.) W ten sam sposób. Czytając stronę podręcznika użytkownika Bash, sekcja ZAPROSZENIE opisuje, w jaki sposób bash znajduje swoje pliki startowe. Szybki grep przez źródło incron pokazuje, że nie wspomina o .bashrc ani .bash_profile.

Możesz zmienić komendę „lessc” w skrypcie na:

/actual/path/to/lessc

które znalazłeś za pośrednictwem

type -p lessc
waltinator
źródło
Lub dodaj „/ actual / path / to / lessc /” do $ PATH, używając polecenia „PATH = $ PATH: / actual / path / to / lessc /” w pliku bash. I dzięki za opublikowanie tego jako odpowiedzi (nie komentarza).
slang
21
npm install -g less

To instaluje Less.js globalnie. Może próbowałeś już tego, ale nie ma go w dokumentacji na http://lesscss.org/ ; Musiałem zapytać w # node.js na FreeNode.

Brian Lacy
źródło
Wykonuję twoje polecenie w moim terminalu ubuntu, ale mam błąd npm ERR! Odmowa usunięcia: / usr / bin / lessc not in / usr / lib / node_modules / less Plik istnieje: / usr / bin / lessc Odsuń go i spróbuj ponownie. npm ERR! System Linux 3.2.0-90-generic-pae npm ERR! polecenie „/ usr / bin / node” ”/ usr / bin / npm” „install” „-g” „less” npm ERR! cwd / home / best npm ERR! węzeł -v v0.10.40 npm ERR! npm -v 1.4.28 npm ERR! ścieżka / usr / bin / lessc npm ERR! kod EEXIST npm ERR! ok kod 0
DaSaDiYa ChaiTAnYa
0

w 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
źródło