2010-10-23 9 views
8

Tengo problemas para obtener el rvm de Ruby Version Manager para mi Ubuntu 10.04 .profile. El código:Sourcing rvm desde mi Ubuntu. Profile solo funciona manualmente, no al iniciar sesión

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

... nunca se hace lo que yo esperaba que (es decir, dame el programa RVM cuando abro un nuevo shell o iniciar una nueva sesión); pero si ejecuto

source .profile 

en un nuevo caparazón después de iniciar sesión, ¡funciona! ¿Por qué funcionará cuando lo fuente manualmente, pero no automáticamente al iniciar sesión?

+0

las que Shell está utilizando? ¿También tienes un .bash_profile? – SimonJ

+0

Posible pregunta duplicada (o al menos idéntica): http://stackoverflow.com/questions/3982244/postinstall-rvmruby-version-manager-without-root-access – joschi

+0

¿Cómo iniciar sesión? Estoy usando gdm3 e intenté obtener rvm de ~/.xprofile, pero ~ /.xprofile es ejecutado por/bin/sh y no es compatible con eso; en mi caso (hack) modifiqué/etc/gdm3/Xsession para usar '#!/bin/bash'. Dependiendo de la forma en que inicie sesión, compruebe si .profile realmente se utiliza (por ejemplo, 'PROFILE_USED = 1; export PROFILE_USED'). Si es así, puede ser ejecutado por el shell equivocado (solo está destinado a ser ejecutado por/bin/sh "o mejor"); si no es así, intente con .xprofile. Te estás perdiendo un], también, pero probablemente sea un error tipográfico aquí. –

Respuesta

0

La página de instalación RVM tiene una serie de cosas que comprobar para probar la inicialización de RVM. Lea la sección "Solución de problemas de su instalación" al final de RVM installation page.

Además, aquí hay una descripción de how Bash reads its startup files que puede ayudar con este tipo de problema.

6

Parecería que Ubuntu maneja es escrituras de la conexión de manera diferente que la mayoría de otras distribuciones de Linux

http://ubuntuforums.org/showpost.php?p=9127226&postcount=6

El post anterior tiene indicios de que los inicios de sesión de GDM en Ubuntu no procesan .bash_profile o .profile la forma más otras distros de linux do. Tuve que poner la línea que carga RVM en ~/.bashrc y eso no ha causado ningún problema todavía.

3

Sourcing $ HOME/.rvm supone que ha instalado RVM como un usuario único, especialmente, el usuario cuyo directorio inicial es $ HOME. Probablemente, en su sistema Ubuntu, RVM se ha instalado todo el sistema, y ​​por lo tanto se debe fuente de los scripts de RVM tales como:

En su archivo .bashrc complemento:

\# Set rvm path 

[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm" 

antes de esta línea; esta línea saldrá y no ejecutará nada más allá de ella, lo que está bien para los inicios de sesión interactivos, el bit sería un problema si está utilizando inicios de sesión SSH no interactivos para fines de automatización.

\# If not running interactively, don't do anything 

[ -z "$PS1" ] && return 
+0

gracias esto ayudó! – 1337holiday

0

que tenía un problema con el editor Atom no recoger entorno RVM y por lo tanto no encontrar rubocop de comandos en Ubuntu 16.04. Pero el problema no estaba allí cuando comencé Atom desde la terminal gnome. Lo que he encontrado fue que el guión RVM ~/.rvm/scripts/rvm que se supone que se carga en la actualidad su .profile tiene estas líneas al principio:

if 
    builtin test -n "${BASH_VERSION:-}" -o -n "${ZSH_VERSION:-}" -o -n "${KSH_VERSION:-}" 
then 
    ... 
else 
    return 0 
fi 

Curiosamente, cuando se ejecutan al iniciar la sesión, he encontrado $BASH_VERSION estar vacío (mientras que en el terminal gnome es algo así como 4.3.46(1)-release), por lo que el script haría un retorno temprano dejando el RVM no cargado correctamente. Traté de establecer BASH_VERSION a lo que sea y funcionó bien.

Aquí está el código completo de mi .profile que carga RVM:

local rvm_home="${HOME}/.rvm" 
export PATH="$PATH:${rvm_home}/bin" 
if [ -z "$BASH_VERSION" ]; then 
    export BASH_VERSION=4 
fi 
source "${rvm_home}/scripts/rvm" 
Cuestiones relacionadas