2012-03-17 17 views
29

RVM está instalado correctamente en mi máquina (ejecutando Mac OSX 10.6.8) y funciona bien. Lo curioso es que para ejecutarlo, tengo que usar source ~/.rvm/scripts/rvm para cada nueva sesión. Intenté hacer un enlace simbólico a /opt/local/bin/rvm, pero cuando se ejecuta no hace nada. También intenté crear un enlace simbólico desde ~/.rvm/bin/rvm a /opt/local/bin/rvm, y cuando ejecuto rvm en el Terminal, muestra la página de ayuda, como se esperaba. Pero cuando intento rvm use some_ruby_version siempre muestra "RVM no es una función, la selección de rubies con 'rvm use ...' no funcionará". ¿Cómo puedo arreglar esto?Error "RVM no es una función"

Mi objetivo es conseguir que el punto que me hacer no tienen que escribir el comando fuente de cada sesión, y por alguna razón ~/.profile no se ejecuta.

+2

Ha intentado añadir las líneas necesarias para '~/.bash_profile'? En mi Mac al menos esa es la que necesito editar al agregar rutas/funciones a mi bash. – user2398029

Respuesta

7

Yo no entendía lo que ~/.profile hace correctamente; Necesitaba cambiar ~/.bash_profile en su lugar. ¡Problema resuelto!

+0

agregue estas líneas a su archivo bashrc – pradeek

42

Debe colocar el script RVM en la sesión actual porque realiza cambios en el entorno del shell, y es absolutamente imposible hacerlo desde un proceso secundario. Sus esfuerzos en ejecutar RVM como un comando externo no pueden tener éxito.

Para solucionar este problema, en realidad tiene dos opciones:

  1. Configurar el emulador de terminal para iniciar un shell de entrada, en lugar de un intérprete de no ingreso, por lo que se carga su .profile.
  2. Modifique .bashrc para obtener RVM en origen, que también funciona para shells que no son de inicio de sesión.

para hacer el segundo sólo puede añadir a ~/.bashrc:

if test -f ~/.rvm/scripts/rvm; then 
    [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
fi 
+4

por favor, no anuncie a RVM fuente en ~/.bashrc, esta no es la solución correcta, el punto 1 es la mejor manera de hacerlo, algunos detalles aquí: https://rvm.beginrescueend.com/support/faq/# shell_login – mpapis

+0

@mpapis ah, pensé que ~/.profile hizo lo que ~/.bash_profile hizo; problema resuelto. – Jwosty

8

Si está utilizando zsh como shell en lugar de bash, usted tiene que:

1.

vi ~/.zshrc 

2. Al igual que Matt dijo, añadir:

if test -f ~/.rvm/scripts/rvm; then 
    [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
fi 

3. Reiniciar Terminall 4. ¡Hecho!

rvm use 1.9.3 

Wil trabajar

+2

¡funciona como un encanto con shell zsh! –

1

Hay que hacer algunos ajustes.

Abra el terminal y ejecute este comando.

source ~/.rvm/scripts/rvm 

y luego ir a edit > Title and command y comprobar Run command as login shell

y ya está. Ahora no necesita especificar el origen cada vez.

0

Tuve este problema cuando me convertí en root. Intenté muchas de las soluciones anteriores. Lo que finalmente funcionó fue salir de root y ser un usuario regular. Que es lo que necesitaba de todos modos.

3

Bueno, con el león de montaña (10.8.3) lo que funcionó para mí estaba editando/etc perfil/

y añadiendo la línea antes mencionada en la parte inferior del archivo:

if test -f ~/.rvm/scripts/rvm; then 
     [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm 
    fi 
2

que tenía el mismo problema He encontrado el archivo .profile no estaba siendo actualizado, por lo que añade el mismo comando que se ha añadido en .bash_profile:

[[-s "$ HOME/.rvm/scripts/RVM"]] & & fuente "$ INICIO/.rvm/scripts/RVM"

no sé si este es el camino correcto, pero funcionó ...

+0

agrega estas líneas a tu perfil ~/.bashrc, funcionará – pradeek

0

Ninguna de estas soluciones parecía redimir mi problema que estaba en Ubuntu 12.04 LTS .

Lo que hice es la siguiente:

  1. rvm get stable --auto-dotfiles como se indica en la documentación RVM here
  2. Agregado source ~/.profile como la primera línea de: ~/.bash_profile

que no todos de estos pasos se documentaron como errores de la línea de comandos de RVM:

RVM no es una función, la selección de rubies con 'rvm use ...' no funcionará en . Necesita cambiar sus preferencias de emulador de terminal para permitir el shell de inicio de sesión . A veces se requiere usar /bin/bash --login como el comando. Por favor, visite https://rvm.io/integration/gnome-terminal/ para ver un ejemplo.

y

  • ADVERTENCIA: Usted tiene el archivo '~/.profile', puede cargarlo, hacer que añadir la siguiente línea a '/ home/nombre_usuario/.bash_profile ':

    source ~/.profile

2

No debería necesitar editar nada como sugieren otros. Simplemente acceda a la configuración de su terminal y seleccione "Ejecutar comando como shell de inicio de sesión". Esto hará que .profile se ejecute en la próxima instancia de terminal. Vuelva a abrir su terminal y podrá usar rvm use 1.9.3 (o la versión que haya instalado).

Más información encontrada en rvm.io (que es también un gran lugar para las respuestas)

https://rvm.io/integration/gnome-terminal

1

lo que me estaba arruinando estaba asumiendo mi camino era correcto ya que estaba usando uno puedo ejecutar manualmente .

Aparentemente hay diferentes ejecutables o scripts que se pueden usar y se encuentran en diferentes lugares.

pensé que el camino Mina debe utilizar era la siguiente:

/usr/local/rvm/bin/rvm 

cuando en realidad fue esto:

/usr/local/rvm/scripts/rvm