When I open a new window in GNU screen, it runs .bashrc but not .bash_profile. In my setup, this results in some environment variables not being set up correctly in that window.

How can I tell GNU screen to always run .bash_profile instead of .bashrc on opening a new window? (Please don't tell me to just call .bash_profile from my .bashrc :)


You want to start bash (or whatever shell) as a login shell. You do this with

shell -$SHELL

in your ~/.screenrc. The magic is the - before the shell. See man screenrc for details. (Well, not many more details, because that's pretty much it.)

  • 1
    When I do this it stops screen starting in the directory I use the command from. How can I make screen use the directory I launch the command from as the directory it starts up in? – theonlygusti Feb 9 '17 at 11:34
  • I don't get that manpage! The online docs are here though: gnu.org/software/screen/manual/screen.html#Shell. I got confused initially as the screenrc is only reread when a screen gets recreated - not each time you make a new window within the application – JonnyRaa Oct 5 '17 at 13:03

You would either need to source ~/.bash_profile from ~/.bashrc or put the things you need directly into ~/.bashrc or put the things in common in a third file and source it from both your ~/.bashrc and ~/.bash_profile.

  • WHERE to source those ? ... be cuz THAT IS THE PROBLEM (screen do NOT source any of them) – THESorcerer Jul 26 '14 at 7:50
  • @THESorcerer: On my system, screen sources ~/.bashrc without the shell command shown in the other answer. – Dennis Williamson Jul 26 '14 at 9:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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