Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'm always having trouble with RVM installs and non-interactive vs. interactive shell sessions. If the session isn't interactive I'm usually getting the command not found error on different programs/functions in the RVM/Ruby toolchain (i.e. gem, rvm, ruby etc.). There are three solutions to the issue I'm aware of:

  • Add/remove some lines from .bashrc for each user. The changes depend on the version of Ubuntu
  • Typing bash --login before working with RVM to get a interactive shell
  • Changing the 'Run command as login shell' option in gnome-terminal

All those solutions aren't exactly what I'm looking for because I have a couple of hosts with different versions of Ubuntu and for some applications the solutions outlined above don't work (i.e. daemonized Chef configuration management suite). As far as I could trace the problem down this is based on the fact that shell scripts in /etc/profile.d are only run if the user logs into a interactive shell session. Which seems not to be the case if a daemonized process runs or if I or an application logs in trough ssh.

What I'm basically searching for is a way to unify all different kinds of shell sessions to execute scripts in /etc/profile.d. Ideally this solution should work for all users that are able to login, and for different versions of Ubuntu (atm in use: 10.4, 11.10). It would also be good if it could be easily be set up using automated scripts or Chef recipes.

As a note: I don't know if not-running scripts in /etc/profile.d is the sole problem I'm facing, I know tough that doing a bash --login usually fixes my issues.

share|improve this question
add comment

1 Answer 1

Your issue is gnome-terminal not using --login for bash by default: https://rvm.io/integration/gnome-terminal/

For scripting with RVM choose one of the methods described here: https://rvm.io/integration/cron/

There is more information on user rc files here: https://rvm.io/support/faq/#shell_login

share|improve this answer
    
In which way does this help? All informations you posted seem to be already mentioned in my question, don't they? –  wintersolutions Mar 13 '12 at 21:39
    
the first link shows you how to enable the login shell in gnome-terminal ... I should be more clear about it –  mpapis Mar 13 '12 at 23:34
    
gnome-terminal doesn't work for processes running on a non-graphical server environment, ssh logins etc. I already knew both links you provided and they don't apply to my problem. The solutions outlined work for one type of login (graphical). I'm updating my question accordingly. –  wintersolutions Mar 14 '12 at 0:01
    
@PizzaPill check the man page of ssh => ssh — OpenSSH SSH client (remote login program), as for using RVM in demonized scripts/cron - you should not use login shell there, it's dangerous, check this ticket for whenever: github.com/javan/whenever/issues/216#issuecomment-4336716 . –  mpapis Mar 14 '12 at 2:31
1  
ok so any terminal (GUI or ssh) should be a login session - it's what you do when open those, so those will make use of interactive RVM. For scripting you should not use interactive RVM loaded ahead (globally via system), there is description on how to use RVM in scripting/cron rvm.beginrescueend.com/integration/cron. –  mpapis Mar 14 '12 at 3:47
show 3 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.