Fornecer o caminho completo não funciona, mas chamar apenas o nome do programa, por quê?

1

O que estou perdendo? Eu posso chamar "rvm" a partir da linha de comando, mas não referenciar o caminho inteiro que which rvm diz que estou usando.

Não que seja importante, mas eu permaneço logado como "Jenkins" o tempo todo e esses comandos são executados em sucessão.

$ whoami
jenkins

O RVM está localizado aqui

$ which rvm
/home/jenkins/.rvm/bin/rvm

Isso funciona

$ rvm use 1.8.7
Using /home/jenkins/.rvm/gems/ruby-1.8.7-p370
Running /home/jenkins/.rvm/hooks/after_use

Mas isso não funciona

$ /home/jenkins/.rvm/bin/rvm use 1.8.7
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal settings to allow shell login.
Please visit https://rvm.io/workflow/screen/ for example.

Sim, eu visitei o link que é referenciado, mas não vejo como isso se aplica a mim.

    
por harperville 07.11.2012 / 16:41

3 respostas

2

which rvm procura por um executável chamado rvm . Esse executável apenas exibe a mensagem “RVM não é uma função…” quando executado.

rvm é provavelmente uma função, ou talvez um alias, no seu shell. Ele foi definido no seu ~/.bashrc (ou no /etc/bash.bashrc do sistema ou em um arquivo incluído em um deles). Para ver qual é o comando rvm , execute type rvm ou command -v rvm .

Veja também Como usar which em um alias comando?

    
por 07.11.2012 / 23:44
0

rvm use funciona modificando as variáveis de ambiente para indicar qual versão do ruby deve ser usada. Isso só pode ser feito se for executado como uma função. Se você executá-lo como um comando, usando o caminho completo ou não tendo a função definida, isso não funcionará. Isso ocorre porque, se executado como um processo separado, o processo obtém sua própria cópia do ambiente, essa cópia é modificada, mas é imediatamente perdida quando o processo é encerrado.

    
por 07.11.2012 / 22:22
0

Acabei de adicionar

#!/bin/bash --login 

no início do script no meu trabalho no Hudson. Tudo funciona agora! :)

    
por 12.02.2013 / 11:35

Tags