Вопрос установка скрипта в $ PATH


Я пытаюсь использовать йоман в Убунту. Все установлено правильно, но я не могу использовать команду yo от bash. Если я перейду в соответствующий каталог и запустим node cli.js все работает из командной строки, поэтому я думаю, что моя проблема в том, что сценарий не загружен в моем $PATH переменная.

Каталог сценария /home/qtrain/.node/lib/node_modules/yo и фактический скрипт /home/qtrain/.node/lib/node_modules/yo/cli.js 

Я попытался добавить путь к файлу .bashrc, используя

export PATH="$PATH:$HOME/.node/lib/node_modules/yo" 

Но когда я перезапускаю терминал и набираю $PATH

Это мой вывод:

/home/qtrain/Enthought/Canopy_64bit/User/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/qtrain/.rvm/bin:/home/qtrain/.rvm/bin:/home/qtrain/.node/lib/node_modules/yo: No such file or directory

и, очевидно, yo не работает.

Мой вопрос: правильно ли я добавляю $ PATH? Должен ли я добавить каталог или фактический скрипт, чтобы заставить его работать в командной строке?

Кроме того, yo был установлен с использованием sudo npm install -g yo поэтому он устанавливается по всему миру. Любая помощь будет оценена по достоинству.


2
2017-08-08 14:58


происхождения


Кроме того, существует несоответствие цитаты в export заявление. - Jos
отредактировал thanks jos - Michael James
Только набрав «$ PATH» и получив результат, вы сделали. Лучший способ увидеть, каково будет текущее значение вашей среды PATH: echo $PATH - отправил Крис Холдорф в ответ. - Tim


ответы:


Проблема в том, что даже если вы добавите этот каталог в свой PATH, нет исполняемой программы с именем «yo».

Я бы добавил функцию к вашему .bashrc:

yo() ( cd ~/.node/lib/node_modules/yo && node cli.js "$@" )

2
2017-08-08 15:27



@Oli, я использую круглые скобки специально, поэтому cd команда выполняет в подоболочке: она не будет влиять на PWD текущей оболочки. - glenn jackman
Тогда вам нужно будет обернуть (...) с { ...; }, Если я попробую это, я получу синтаксическую ошибку. - Oli♦
В самом деле. Исправлена. Благодарю. - glenn jackman


Я знаю, что это плохая форма, чтобы ответить на мой собственный вопрос, но, похоже, это довольно распространенная проблема, поэтому, надеюсь, это поможет другим. Получили помощь на канале irc # ubuntu-pa-us.

Решение:

Предоставление прав на выполнение файлов.

    cd /path/to/directory   
    chmod +x cli.js

Создать символическую ссылку - должен использовать полный путь к каталогу - в моем случае

    ln -s /home/user/.node/lib/node_modules/yo/cli.js /usr/bin/yo

Теперь я работаю из командной строки.


0
2017-08-08 15:55



Это совсем не плохая форма, ее даже поощряют: askubuntu.com/help/self-answer - glenn jackman
Поскольку он установлен под вашим домашним каталогом, вы должны добавить ссылку как $HOME/bin/yo и добавить $HOME/bin к вашей ПУТЬ. - glenn jackman
@glennjackman прикасается! Thx Glenn, сделают. - Michael James