Fondo
Me estoy metiendo en Ruby 2.x, y Rails 4.x, en una MacBook usando OS X El Capitan (10.11.3), usando la cáscara de pescado, empleando la integración enumerada en esta página: RVM - Fish Shell (Integración)
Problema
Al ejecutar varios comandos tales como rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, etc., recibo el mensaje de error siguiente:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
La búsqueda rápida en Google no devuelve ningún resultado relacionado que pueda ayudarme a identificar y / o solucionar el problema, como ha funcionado para muchos de mis otros problemas de configuración de desarrollo.
Hice una búsqueda rápida de texto en el rvm.fish
archivo de funciones, debajo del .config/fish
directorio, y también dentro del $HOME/.rvm/bin/rvm
ejecutable principal, y no vi un comando como shell_session_update
ser llamado directamente en ese archivo.
Pregunta
¿Alguien sabe por qué sucede esto y cómo puedo solucionarlo? Soy una persona a la que le gusta arreglar las cosas frente a mí, de modo que solo las cosas sobre las que necesito actuar aparezcan frente a mí, por lo que me gustaría eliminar este mensaje de error / advertencia. :)
PD: Parece que una versión particular de Ruby (2.0.0) que intentaba instalar y utilizar funciona correctamente, incluso en la misma sesión de terminal (iTerm (2)), sin tener que reiniciarla. Desde entonces he cerrado ese y he creado una nueva sesión de terminal, y todavía veo aparecer el mensaje cuando ejecuto los diversos comandos antes mencionados.
shell_session_update
es una función Bash instalada por OS X/etc/bashrc_Apple_Terminal
, por lo que presumiblemente algo en los comandos Bash que ejecuta RVM la produce como salida.Respuestas:
TL; DR: Asegúrese de que RVM esté actualizado al menos a 1.26.11 reinstalando o emitiendo el comando
rvm get head
, y solo se esté inicializando una vez por entorno de terminal.Resultado
Finalmente pude arreglar mi entorno. Publicaré información relacionada con mi problema específico en un esfuerzo por ayudar a algunos, aunque otros puedan tener el mismo síntoma pero otra causa raíz.
Porque
Una parte del problema raíz provenía de RVM, y cómo se estaba inicializando para mis entornos de línea de comandos. Encontré un par de formas diferentes de hacer esto, especialmente porque un método adicional fue diseñado específicamente para el
fish
entorno de shell.Parece que la causa raíz fue:
fish
, y se ejecutaban en mi otro entorno de terminalbash
, o viceversa. Esto se puede ver en mis detalles a continuación, donde labash
RUTA rota tiene algunas de las rutas delimitadas por:
s, pero luego otras también están incluidas por espacios, que es una sintaxis incorrectabash
, pero correctafish
.Luego, la otra parte del problema raíz fue que parece que recientemente se produjo un error relacionado con RVM / direnv con respecto a la función trap. Probablemente encontré esto nuevamente al tener una de las otras versiones problemáticas de RVM que podrían ser causadas por:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
a~/.rvmrc
Este problema debe solucionarse a partir del 30 de marzo de 2016 o la versión 1.26.11:
La historia
Después de luchar con las utilidades de GNU para hacer una búsqueda completa del sistema de archivos, mirar dentro del contenido del archivo, utilicé Atom para hacer esto con más éxito, y descubrí que la única aparición
shell_session_update
se encontró en el/etc/bashrc_Apple_Terminal
archivo mencionado por Zanchey (además de los archivos de historial y tal). Tampoco estoy seguro de por qué se estaba ejecutando porque estaba usando iTerm (2), y el valor de$TERM_PROGRAM
en ese caso esiTerm.app
y noApple_Terminal
.Tampoco ayudó que, por alguna razón, tuviera que administrar la instalación de RVM más de una vez, pasando por el proceso de instalación, que aparentemente ya agrega la configuración a varios 'archivos de puntos', donde también había agregado manualmente algunas o las líneas .
Junto con eso, hice un
.bashrc
archivo y lo vinculé desde.bash_profile
mi Mac, ya que aparentemente no existía por defecto. Anteriormente había leído en un sistema Linux que, por convención,.bash_profile
es bueno para algunas personalizaciones, y.bashrc
es bueno para otros, como la definición de alias de usuario y funciones, o viceversa. Así que no estaba acostumbrado a mirar dentro del.bash_profile
archivo, y especialmente no en el.profile
archivo, todo en el directorio de usuarios, que también copia un sistema similar. Tampoco olvidemos que hay unpath_helper
en la mezcla (!), Pero no parece contribuir a ningún problema.Las posibles formas de configurar el entorno, que pueden ser correctas o no, son las siguientes:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(como la última línea que modifica laPATH
variable justo antes de entregar el control al usuario.rvm default
(También debe ser la últimaPATH
línea de modificación. De: StackOverflow - Obteniendo "¡Advertencia! PATH no está configurado correctamente" cuando se usa rvm use 2.0.0 --default )Más detalles
Para una verbosidad más increíble, aquí hay algunos caminos de ejemplo que capturé entre diferentes entornos al depurar el problema:
RUTA original (rota) de pescado
'Naturalmente' mejor pez RUTA
RUTA original (rota)
'Manualmente' fijo bash PATH
'Naturalmente' mejor bash PATH
Notas:
.bashrc
etc., y luego finalmente los ejecuté después de que se resolvió el problema.fuente
rvm get head
y luegorvm reinstall {version}
para cada versión terminó arreglando para mícurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
al final en mi.bash_profile
. Fijo.Yo también tuve el mismo problema. Más tarde descubrí que ya hay un problema presente en rvm repo para esto. Y lo han arreglado en una de las solicitudes de extracción.
Para solucionar esto, actualice el rvm a la última versión o apúntelo a la revisión de desarrollo actual.
Para más detalles, consulte esta publicación .
fuente