Perché ho / come posso correggere questo errore: "shell_session_update: comando non trovato"


24

sfondo

Sto entrando in Ruby 2.xe Rails 4.x, su un MacBook usando OS X El Capitan (10.11.3), usando la shell di pesce, impiegando l'integrazione elencata in questa pagina: RVM - Fish Shell (Integrazione)

Problema

Durante l'esecuzione di vari comandi, come rvm version, rvm install ..., rvm use ..., rvm --default ..., ecc, viene visualizzato il seguente messaggio di errore:

/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found

La rapida ricerca di Google non restituisce alcun risultato correlato che mi aiuterebbe a identificare e / o risolvere il problema, come ha funzionato per molti altri miei problemi di configurazione dello sviluppo.

Ho fatto una rapida ricerca di testo nel rvm.fishfile delle funzioni, nella .config/fishdirectory e anche $HOME/.rvm/bin/rvmnell'eseguibile principale, e non ho visto un comando come shell_session_updateessere chiamato direttamente in quel file.

Domanda

Qualcuno sa perché questo sta accadendo e come posso risolverlo? Sono una persona a cui piace sistemare le cose davanti a me, in modo che solo le cose su cui ho bisogno di agire compaiano davanti a me, quindi vorrei rimuovere questo messaggio di errore / avviso. :)

PS Una particolare versione di Ruby (2.0.0) che stavo tentando di installare e utilizzare, sembra funzionare in modo appropriato, anche nella stessa sessione di terminale (iTerm (2)), senza doverla riavviare. Da allora ho chiuso quella e ho creato una nuova sessione di terminale, e ancora vedo apparire il messaggio quando eseguo i vari comandi di cui sopra.


shell_session_updateè una funzione Bash installata da OS X in /etc/bashrc_Apple_Terminal, quindi presumibilmente qualcosa nei comandi Bash che RVM esegue lo sta producendo come output.
Zanchey,

Risposte:


41

TL; DR: assicurarsi che RVM sia aggiornato almeno all'1.26.11 reinstallando o eseguendo il comando rvm get heade che venga inizializzato solo una volta per ambiente terminale.

Risultato

Alla fine sono stato in grado di riparare il mio ambiente. Pubblicherò alcune informazioni relative al mio problema specifico nel tentativo di aiutare alcuni, anche se altri potrebbero avere lo stesso sintomo ma un'altra causa principale.

Causa

Una parte del problema alla radice proveniva da RVM e da come veniva inizializzata per i miei ambienti a riga di comando. Avevo trovato un paio di modi diversi per farlo, soprattutto perché un metodo in più era stato appositamente progettato per l' fishambiente shell.

Sembra che la causa principale sia stata:

  • inizializzazione di RVM più di una volta, poiché avevo più istruzioni, una per file di configurazione del terminale e, a causa del modo in cui erano concatenate, non ero a conoscenza delle altre aggiunte automaticamente.
  • Oppure, in qualche modo sono state aggiunte dichiarazioni che mescolavano l'inizializzazione per un ambiente terminale, diciamo fish, e venivano eseguite nell'altro mio ambiente terminale bash, o viceversa. Questo può essere visto nei miei dettagli qui sotto dove il bashPATH rotto ha alcuni dei percorsi delimitati da :s, ma poi altri inclusi anche dagli spazi, che è sintassi errata per bash, ma corretta per fish.
  • O stavano accadendo entrambi!

Quindi l'altra parte del problema di root era che sembra che un bug relativo a RVM / direnv si sia insinuato recentemente riguardo alla funzione trap. Probabilmente l'ho riscontrato di nuovo avendo una delle altre versioni problematiche di RVM che potrebbero essere causate da:

  • Una reinstallazione: curl -sSL https://get.rvm.io | bash
  • Un aggiornamento manuale: rvm get head
  • Un aggiornamento automatico (che avevo appena fatto) aggiungendo rvm_autoupdate_flag=2a~/.rvmrc

Questo problema dovrebbe essere risolto il 30 marzo 2016 o la versione 1.26.11:

La storia

Dopo aver combattuto con le utility GNU per fare una ricerca completa del file system, sbirciando all'interno del contenuto del file, ho usato Atom per fare questo con maggior successo, e ho scoperto che l'unica occorrenza di è shell_session_updatestata trovata nel /etc/bashrc_Apple_Terminalfile menzionato da Zanchey (oltre ai file di cronologia e simili). Inoltre non sono sicuro del motivo per cui è stato eseguito perché stavo usando iTerm (2), e il valore di $TERM_PROGRAMin quel caso è iTerm.appe no Apple_Terminal.

Inoltre, non ha aiutato il fatto che, per qualche motivo, ho dovuto gestire l'installazione di RVM più di una volta, attraversando il processo di installazione, che apparentemente aggiunge già la configurazione a diversi 'dotfile', dove avevo anche aggiunto manualmente alcune o le linee .

Insieme a questo avevo creato un .bashrcfile e collegato ad esso dal .bash_profilemio Mac, poiché apparentemente non esisteva per impostazione predefinita. In precedenza avevo letto su un sistema Linux che, per convenzione, .bash_profileè buono per alcune personalizzazioni ed .bashrcè buono per altri come la definizione di alias e funzioni dell'utente o viceversa. Quindi non ero abituato a guardare all'interno del .bash_profilefile, e soprattutto non nel .profilefile, tutto nella directory dell'utente, che copia anche un sistema simile. Non dimentichiamo inoltre che a path_helperè nel mix (!), Ma non sembra contribuire a nessun problema.

I modi possibili per impostare l'ambiente, che possono essere corretti o meno, sono i seguenti:

Più dettagli

Per una verbosità più incredibile, ecco alcuni esempi di percorsi che ho catturato da ambienti diversi durante il debug del problema:

PERCORSO di pesce originale (rotto)

/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ ruby-2.0.0-p648 / bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki /Users/username/.rvm/ bidone

PERCORSO di pesce "naturalmente" migliore

/ usr / local / opt / coreutils / libexec / gnubin / usr / local / opt / findutils / bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki

PERCORSO originale (rotto)

/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin / Users /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki : /Users/username/.rvm/bin

PERCORSO di bash fisso manualmente

/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin: /Users/username/.rvm/rubies/ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin

PERCORSO "naturalmente" migliore

/ Usr / local / opt / coreutils / libexec / gnubin: / usr / local / opt / findutils / bin: / usr / local / opt / coreutils / libexec / gnubin: / usr / local / opt / findutils / bin: / usr / local / bin: / usr / bin: bin /: / usr / sbin: / sbin: / usr / local / Munki

Gli appunti:

  • Gli "originali" erano dovuti all'avvio del nuovo ambiente in entrambi gli interpreti della riga di comando, pur avendo il problema.
  • Il 'manuale' è ovviamente quando ho preso la stringa errata del percorso, riparato gli errori di sintassi e visto un funzionamento più corretto dell'interprete, quindi sapevo cosa aspettarmi quando continuavo a correggere la causa principale.
  • I "naturali" risalgono a quando ho saltato per la prima volta il caricamento dei file di configurazione del mio ambiente terminale come .bashrce così via, e poi li ho eseguiti dopo che il problema era stato risolto.

rvm get heade poi rvm reinstall {version}per ogni versione è stato
risolto

1
Se si utilizza il metodo di installazione curl:curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

Questa risposta è oro. Utile e approfondito.
TehShrike,

Ho avuto questo "problema" dopo aver installato bash-git-prompt. Reinstallare rvm sembrava naaah troppo . Quindi mi sono appena spostato <rvm sourcing line>alla fine nel mio .bash_profile. Fisso.
d.C.

Di solito ho scoperto che risolto questo altro messaggio di errore a cui si fa riferimento qui: stackoverflow.com/questions/18276701/… “Attenzione! PERCORSO non è impostato correttamente ”Forse hai avuto linee di approvvigionamento da qualche altra parte che lo renderebbero più simile a questo problema? Non avrebbe esattamente senso, ma tutto è possibile.
Pysis,

5

Anch'io ho avuto lo stesso problema. Successivamente ho scoperto che esiste già un problema nel repository rvm per questo. E l'hanno risolto in una delle richieste pull.

Per risolvere questo problema, aggiornare rvm all'ultima versione o puntarlo alla revisione di sviluppo corrente.

rvm get head

Per maggiori dettagli fare riferimento a questo post .


1
Potresti citare le parti rilevanti dal link? Altrimenti sembra che tu stia cercando di promuovere il tuo blog.
Burgi,

questo non funziona in travis, vedi github.com/travis-ci/travis-ci/issues/9511
timotheecour
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.