instalando um script em $ PATH

2

Estou tentando usar yeoman no Ubuntu. Tudo está instalado corretamente, mas não consigo usar o comando yo do bash. Se eu navegar para o diretório apropriado e executar node cli.js , tudo funcionará no prompt de comando, então acho que meu problema é que o script não está carregado na minha variável $PATH .

O diretório do script é /home/qtrain/.node/lib/node_modules/yo e o script real é /home/qtrain/.node/lib/node_modules/yo/cli.js

Eu tentei adicionar o caminho para o arquivo .bashrc usando

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

Mas quando eu reiniciar o terminal e digitar $PATH

Esta é minha saída:

/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

e, obviamente, você não funciona.

Minha pergunta: não estou adicionando o $ PATH corretamente? Devo adicionar o diretório ou o script real para que isso funcione na linha de comando?

Além disso, você foi instalado usando sudo npm install -g yo , portanto, está instalado globalmente. Qualquer ajuda seria apreciada.

    
por Michael James 08.08.2014 / 16:58

2 respostas

2

O problema é que, mesmo se você adicionar esse diretório ao seu PATH, não há nenhum programa executável chamado "yo" lá.

Eu adicionaria uma função ao seu .bashrc:

yo() ( cd ~/.node/lib/node_modules/yo && node cli.js "$@" )
    
por glenn jackman 08.08.2014 / 17:27
0

Eu sei que é uma boa forma de responder a minha própria pergunta, mas, isso parece ser um problema muito comum, então espero que isso ajude os outros. Assistência recebida no canal irc # ubuntu-pa-us.

Solução:

Conceder permissões executáveis ao arquivo.

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

Crie um symlink - deve usar o caminho completo para o diretório - no meu caso

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

Agora você trabalha na linha de comando.

    
por Michael James 08.08.2014 / 17:55