Questão instalando um script no $ PATH


Eu 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 funciona a partir do prompt de comando, então eu acho que o meu problema é que o script não está carregado no meu $PATH variável.

O diretório para o script é /home/qtrain/.node/lib/node_modules/yo e o roteiro atual é /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 digite $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 yo foi instalado usando sudo npm install -g yo por isso é instalado globalmente. Qualquer ajuda seria apreciada.


2
2017-08-08 14:58


origem


Além disso, há uma incompatibilidade de cotação na export declaração. - Jos
obrigado editado jos - Michael James
Apenas no ponto de digitar "$ PATH" e obter a saída que você fez. A melhor maneira de ver qual é o valor atual do seu ambiente PATH seria: echo $PATH - postado por Cris Holdorph como resposta. - Tim


Respostas:


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 "$@" )

2
2017-08-08 15:27



@Oli, eu uso parênteses de propósito, então o cd O comando é executado em um subshell: não afetará o PWD do shell atual. - glenn jackman
Então você precisa envolver o (...) com { ...; }. Eu recebo um erro de sintaxe se eu tentar isso. - Oli♦
De fato. Fixo. Obrigado. - glenn jackman


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:

Dê permissões executáveis ​​ao arquivo.

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

Crie um link simbólico - 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 a partir da linha de comando.


0
2017-08-08 15:55



Não é uma forma ruim, é até encorajado: askubuntu.com/help/self-answer - glenn jackman
Como ele está instalado em seu diretório inicial, você deve adicionar o link como $HOME/bin/yo e adicione $HOME/bin para o seu caminho. - glenn jackman
@glennjackman touche! Thx Glenn, vai fazer. - Michael James