"Команда не знайдена" під час запуску "lessc" з bash


12

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

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

він працює чудово.
Однак, коли я вкладаю цю саме таку команду в скрипт bash less.sh, вона повертає помилку

lessc : command not found.

Крім того, мені потрібно запустити цю команду з bash-скрипту, оскільки incronпрограма, яку я використовую для перекомпіляції меншого сценарію щоразу, коли вони змінюються, не може запустити вищезазначену команду, яку, на мою думку, може бути викликано дивні методи поводження з пробілом у команді.


Непрацюючий скрипт запускається в тому ж терміналі, де lesscпрацює, або якимось іншим способом (крон, пускова установка, Alt-F2, інші)?
enzotib

Є кінець вашої команди. Це друкарство тільки тут чи воно також є у вашому less.sh?
elmicha

так, backtick був помилковим. @enzotib чи має значення, звідки запускається сценарій, і чи змінить би щось, що могло б викликати помилку, згадану вище?
сленг

Так, це має значення. У різних ситуаціях у вас можуть бути різні ПАТИ.
enzotib

Дякую, дослідивши змінну $ PATH, я виявив, що lessc був у "/ opt / lessc / bin / lessc", який потрібно було додати до $ PATH.
сленг

Відповіді:


7

Де виконується "lessc"? Зробіть:

type -p lessc

і візьміть на замітку каталог і з’ясуйте, де цей каталог доданий до вашої PATH. Я думаю, що bash та incron не посилають файли налаштування (.bashrc тощо) однаково. Читаючи сторінку Man Bash, в розділі INVOCATION описано, як bash знаходить свої файли запуску. Швидкий пробір через джерело інкрону показує, що він не згадує .bashrc або .bash_profile.

Ви можете змінити команду "lessc" у своєму сценарії на:

/actual/path/to/lessc

що ви знайшли через

type -p lessc

Або додайте "/ фактичний / шлях / до / lessc /" до $ PATH, використовуючи команду "PATH = $ PATH: / фактичний / шлях / до / 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 / менше Файл існує: / usr / bin / lessc Перемістіть його та повторіть спробу. npm ERR! Помилка системи Linux 3.2.0-90-generic-pae npm! команда "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "менше" npm ERR! cwd / home / best npm ERR! ERR node -v v0.10.40 npm! npm -v 1,4,28 npm ERR! ERR шлях / usr / bin / lessc npm! код EEXIST npm ERR! не нормально код 0
DaSaDiYa ChaiTAnYa

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.