«Команда не найдена» при запуске «lessc» из bash

12

Я установил lesscчерез npmменеджер пакетов Node.js, и когда я запускаю lesscиз терминала, используя

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

это работает отлично.
Однако когда я помещаю эту же команду в скрипт bash less.sh, она возвращает ошибку

lessc : command not found.

Кроме того, мне нужно запустить эту команду из сценария bash, поскольку incronпрограмма, которую я использую для повторной компиляции своего сценария less при каждой их модификации, не может выполнить указанную выше команду, которая, по моему мнению, может быть вызвана странные методы для обработки пробелов в команде.

сленг
источник
Неработающий скрипт запускается в том же терминале, где lesscработает, или какими-то другими способами (cron, лаунчер, Alt-F2, другие)?
энзотиб
В конце вашей команды есть обратный удар. Эта опечатка только здесь или в вашем less.sh?
elmicha
да обратная связь была опечаткой. @enzotib Имеет ли значение, откуда запускается скрипт, и изменит ли он что-либо, что может вызвать ошибку, упомянутую выше?
сленг
Да, это важно В разных ситуациях вы можете иметь разные пути.
энзотиб
Спасибо, после исследования переменной $ PATH я обнаружил, что lessc был в "/ opt / lessc / bin / lessc", который нужно было добавить в $ PATH.
сленг

Ответы:

7

Где находится исполняемый файл "lessc"? Делать:

type -p lessc

и запомните каталог, и выясните, где этот каталог добавлен в вашу PATH. Я думаю, что bash и incron не используют ваши установочные файлы (.bashrc и т. Д.) Одинаково. Читая справочную страницу Bash, раздел INVOCATION описывает, как bash находит свои файлы запуска. Быстрый поиск источника incron показывает, что он не упоминает .bashrc или .bash_profile.

Вы можете изменить команду "lessc" в вашем скрипте на:

/actual/path/to/lessc

что вы нашли через

type -p lessc
waltinator
источник
Или добавьте «/ actual / path / to / lessc /» в $ PATH, используя команду «PATH = $ PATH: / actual / path / to / lessc /» в файле bash. И спасибо за размещение этого в качестве ответа (не комментарий).
сленг
21
npm install -g less

Это устанавливает Less.js во всем мире. Возможно, вы уже пробовали это, но этого нет в документации на http://lesscss.org/ ; Я должен был спросить в # node.js на FreeNode.

Брайан Лейси
источник
Я выполняю вашу команду в моем терминале Ubuntu, но я получил npm ERR! Отказ от удаления: / usr / bin / lessc отсутствует в / usr / lib / node_modules / less Файл существует: / usr / bin / lessc Уберите его и попробуйте снова. нпм ERR! Система Linux 3.2.0-90-generic-pae npm ERR! команда "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "less" npm ERR! cwd / home / best npm ERR! узел -v v0.10.40 нпм ERR! npm -v 1.4.28 npm ERR! путь / usr / bin / lessc npm ERR! код EEXIST npm ERR! не в порядке код 0
DaSaDiYa ChaiTAnYa
0

в Лубунту:

$ 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
Энрике Сан Мартин
источник