Je viens de configurer un nouveau serveur Ubuntu 13.10 avec Ruby 2.1.1 installé via rvm
.
Le problème est que chaque fois que je passe à l'utilisateur "Rails" (l'utilisateur avec lequel j'ai installé Ruby et Rails avec), je dois exécuter /bin/bash --login
avant qu'Ubuntu ne reconnaisse que Ruby, Rails ou rvm
est installé.
J'espère que quelqu'un sait:
Toute aide est appréciée!
Il semble que l'environnement nécessaire pour que le système trouve les composants Ruby installés est spécifié dans un fichier qui n'est lu que pour les shells de connexion. La page de manuel bash a ceci à dire sur la différence entre les shells de connexion et les shells non-login:
INVOCATION
A login Shell is one whose first character of argument zero is a -, or
one started with the --login option.
et
When bash is invoked as an interactive login Shell, or as a non-inter‐
active Shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable.
tandis que
When an interactive Shell that is not a login Shell is started, bash
reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if
these files exist.
Par conséquent, si les variables d'environnement Ruby se trouvent par exemple dans /home/Rails/.profile
ou /etc/profile
, elles seront ajoutées à l'environnement Shell.
su -l Rails
ou su --login Rails
ou du raccourci su - Rails
Rails
se connecte via SSHbash --login
après la connexionSi vous souhaitez que l'environnement Ruby soit défini quelle que soit la manière dont vous passez à l'utilisateur Rails
name__, vous pouvez déplacer les définitions de variable pertinentes vers le ~/.bashrc
de l'utilisateur.
Je sais que cette question a été posée il y a 2 ans, mais au cas où quelqu'un (comme moi) y ferait encore face: @steeldriver a raison, il manque quelque chose dans votre bashrc
que vous avez dans l'un de ces 3 fichiers. Dans mon cas, je devais simplement ajouter cette ligne dans le mien ~/.bashrc
:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"