fundo
Estou entrando no Ruby 2.xe no Rails 4.x, em um MacBook usando o OS X El Capitan (10.11.3), usando a casca de peixe, empregando a integração listada nesta página: RVM - Fish Shell (Integration)
Problema
Ao executar vários comandos, como rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, etc., recebo a seguinte mensagem de erro:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
A pesquisa rápida do Google não retorna nenhum resultado relacionado que me ajude a identificar e / ou corrigir o problema, como funcionou em muitos dos meus outros problemas de configuração de desenvolvimento.
Fiz uma pesquisa rápida de texto no rvm.fish
arquivo de funções, no .config/fish
diretório e também dentro do $HOME/.rvm/bin/rvm
executável principal, e não vi um comando como o de shell_session_update
ser chamado diretamente nesse arquivo.
Questão
Alguém sabe por que isso está acontecendo e como posso corrigi-lo? Sou uma pessoa que gosta de consertar as coisas na minha frente, para que apenas as coisas que eu preciso tomar sejam exibidas na minha frente, então eu gostaria de remover esta mensagem de erro / aviso. :)
PS Uma versão específica do Ruby (2.0.0) que eu estava tentando instalar e usar, parece estar funcionando adequadamente, mesmo na mesma sessão do terminal (iTerm (2)), sem ter que reiniciá-la. Desde então, fechei essa e criei uma nova sessão de terminal e ainda vejo a mensagem aparecer ao executar os vários comandos mencionados acima.
shell_session_update
é uma função Bash instalada pelo OS X in/etc/bashrc_Apple_Terminal
, portanto, presumivelmente, algo nos comandos Bash que o RVM executa está produzindo-a como saída.Respostas:
TL; DR: verifique se o RVM está atualizado para pelo menos 1.26.11 reinstalando ou emitindo o comando
rvm get head
e está sendo inicializado apenas uma vez por ambiente de terminal.Resultado
Eventualmente, consegui consertar meu ambiente. Vou postar algumas informações referentes ao meu problema específico, em um esforço para ajudar alguns, mesmo que outros possam ter o mesmo sintoma, mas outra causa raiz.
Causa
Uma parte do problema raiz vinha do RVM e como ele estava sendo inicializado para meus ambientes de linha de comando. Eu havia encontrado algumas maneiras diferentes de fazer isso, especialmente porque um método extra foi criado especificamente para o
fish
ambiente do shell.Parece que a causa raiz foi:
fish
, e estavam sendo executadas no meu outro ambiente de terminalbash
, ou vice-versa. Isso pode ser visto nos meus detalhes abaixo, onde obash
PATH quebrado tem alguns dos caminhos delimitados por:
s, mas outros também incluídos por espaços, que é sintaxe incorreta parabash
, mas correta parafish
.A outra parte do problema raiz é que parece que um bug relacionado ao RVM / direnv surgiu recentemente em relação à função trap. Eu provavelmente encontrei isso novamente por ter um dos outros lançamentos problemáticos do RVM que podem ser causados por:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
ao~/.rvmrc
Esse problema deve ser corrigido em 30 de março de 2016 ou na versão 1.26.11:
A história
Depois de lutar com os utilitários GNU para fazer uma pesquisa completa do sistema de arquivos, espreitando o conteúdo do arquivo, usei o Atom para fazer isso com mais sucesso e descobri que a única ocorrência de
shell_session_update
foi encontrada no/etc/bashrc_Apple_Terminal
arquivo mencionado por Zanchey (além dos arquivos de histórico e tal). Também não sei por que isso estava sendo executado porque eu estava usando o iTerm (2), e o valor de$TERM_PROGRAM
nesse caso éiTerm.app
e nãoApple_Terminal
.Também não ajudou que eu, por algum motivo, tivesse que gerenciar a instalação do RVM mais de uma vez, passando pelo processo de instalação, que aparentemente já adiciona configuração a vários 'dotfiles', onde eu também adicionei manualmente algumas ou as linhas .
Junto com isso, eu criei um
.bashrc
arquivo e vinculei a ele.bash_profile
no meu Mac, já que aparentemente não existia por padrão. Eu já havia lido em um sistema Linux que, por convenção,.bash_profile
é bom para algumas personalizações e.bashrc
para outros, como definir aliases e funções de usuário ou vice-versa. Portanto, eu não estava acostumado a procurar dentro do.bash_profile
arquivo, e especialmente o.profile
arquivo, tudo no diretório do usuário, que o sistema semelhante copia também. Também não devemos esquecer que umpath_helper
está no mix (!), Mas não pareceu contribuir para nenhum problema.As maneiras possíveis de configurar o ambiente, que podem estar corretas ou não, são as seguintes:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(como a última linha que modifica aPATH
variável imediatamente antes do controle ser entregue ao usuário.rvm default
(Também precisa ser a últimaPATH
linha de modificação. De: StackOverflow - Obtendo "Warning! PATH não está configurado corretamente" ao fazer o uso do rvm 2.0.0 - padrão )Mais detalhes
Para uma verbosidade mais incrível, eis alguns exemplos de caminhos que capturei entre diferentes ambientes ao depurar o problema:
CAMINHO (quebrado) de peixe original
'Naturalmente' melhor peixe PATH
CAMINHO original (quebrado) do bash
PATH bash fixo 'manualmente'
CAMINHO 'naturalmente' melhor do bash
Notas:
.bashrc
e assim por diante, e depois os executei depois que o problema foi resolvido.fonte
rvm get head
e, em seguida,rvm reinstall {version}
para cada versão acabou fixa, para mecurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
para o final.bash_profile
. Fixo.Eu também tive o mesmo problema. Mais tarde, descobri que já existe um problema no rvm repo para isso. E eles o corrigiram em uma das solicitações pull.
Para corrigir isso, atualize o rvm para a versão mais recente ou aponte para a revisão de desenvolvimento atual.
Para mais detalhes, consulte este post .
fonte