2010-10-23 10 views
8

Ho problemi a ottenere il gestore della versione di Ruby rvm per l'origine dal mio profilo di Ubuntu 10.04. Il codice:Sourcing rvm dal mio Ubuntu .profile funziona solo manualmente, non al login

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

... non fa mai quello che mi aspetto che (vale a dire darmi il programma rvm quando apro una nuova shell o avviare una nuova sessione); ma se eseguo

source .profile 

in una nuova shell dopo l'accesso, funziona! Perché funzionerà quando lo manterrò manualmente, ma non automaticamente all'accesso?

+0

quale shell stai usando? Hai anche un profilo .bash? – SimonJ

+0

Possibile domanda duplicata (o almeno identica): http://stackoverflow.com/questions/3982244/postinstall-rvmruby-version-manager-without-root-access – joschi

+0

Come accedere? Sto usando gdm3 e ho cercato di generare rvm da ~/.xprofile, ma ~ /.xprofile è eseguito da/bin/sh e non lo supporta; nel mio caso (hack) ho modificato/etc/gdm3/Xsession per usare '#!/bin/bash'. A seconda del modo in cui si effettua il login, verificare se .profile è realmente utilizzato (ad es. 'PROFILE_USED = 1; export PROFILE_USED'). Se lo è, può essere eseguito dalla shell sbagliata (è pensato solo per essere eseguito da/bin/sh "o meglio"); se non lo è, prova .xprofile. Ti manca anche un], ma probabilmente è un refuso qui. –

risposta

0

La pagina di installazione RVM ha una serie di elementi da verificare per verificare l'inizializzazione di RVM. Leggi la sezione "Risoluzione dei problemi relativi all'installazione" alla fine di RVM installation page.

Inoltre, ecco una descrizione di how Bash reads its startup files che può aiutare con questo tipo di problema.

6

Sembrerebbe che Ubuntu gestisce sia gli script di accesso in modo diverso rispetto alla maggior parte delle distribuzioni Linux

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

È possibile che questo post è suggerimenti che i login GDM in Ubuntu non elaborano .bash_profile o .profile il modo più altre distribuzioni di Linux. Ho dovuto inserire la riga che carica RVM in ~/.bashrc e che non ha ancora causato problemi.

3

L'acquisto di $ HOME/.rvm presuppone che RVM sia stato installato da un singolo utente, in particolare, l'utente la cui home directory è $ HOME. Probabilmente, sul vostro sistema Ubuntu, RVM è stato installato a livello di sistema, e quindi è necessario procurarsi gli script RVM in quanto tali:

Nel file .bashrc aggiuntivo:

\# Set rvm path 

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

prima di questa linea; questa linea uscirà e non eseguirà nulla oltre, che va bene per gli accessi interattivi, il bit sarebbe un problema è che si stanno utilizzando accessi SSH non interattivi per scopi di automazione.

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

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

grazie questo ha aiutato! – 1337holiday

0

ho avuto un problema con l'editor Atom non raccogliendo ambiente RVM e, quindi, non trovando rubocop comando su Ubuntu 16.04. Ma il problema non c'era quando ho avviato Atom da terminale GNOME. Quello che ho trovato era che RVM sceneggiatura ~/.rvm/scripts/rvm che si suppone di essere carico in vostra .profile ha queste linee all'inizio:

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

Stranamente, quando eseguito al login, ho trovato $BASH_VERSION essere vuoto (mentre nel terminale di Gnome è come 4.3.46(1)-release), quindi lo script farebbe presto ritorno lasciando RVM non caricato correttamente. Ho provato a impostare BASH_VERSION per qualsiasi cosa e ha funzionato bene.

Ecco il codice completo dal mio .profile che carica 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" 
Problemi correlati