Since the long ago time when I used both XWindows and Linux console using getty
program, I’ve setup some files this way:
- ~/.bash_profile
-
#!/bin/bash source ~/.bashrc source ~/.bash_common
- ~/.xsession
-
#!/bin/bash source ~/.bash_common numlockx on exec gnome-session
In ~/.bash_common I’ve put export
Bash statements to set environment variables I use both in console sessions and in XWindows.
In ~/.bashrc I’ve put Bash alias
statements, Bash function definitions and other setting specific to Bash used interactively, such as PROMPT_COMMAND
shell variable or
shopt -sq cdspell checkwinsize lithist extglob checkhash histappend mailwarn histverify histreedit
In this sophisticated way my environment initializes both if I login from the console to Bash or start my session in some other way, while the initialization specific to Bash runs only when I start Bash as an interactive shell (e.g. from getty or in an X terminal such as Gnome Terminal or Konsole, that is Bash started with -i
flag).
This improves performance as when Bash starts non-interactively, settings from ~/.bashrc are not unnecessarily read.
Finally my ~/.xsession file runs Gnome Session with all variables I’ve set in ~/.bash_common.
That more, that good.
But there is a problem I don’t know how to solve: When logging in with GDM display manager if I specify an alternate desktop environment than System Default (which apparently runs my ~/.xsession) I get it started without variables in ~/.bashrc. And I don’t know how to make it work.
A reader, do you know how to work around this problem?
Not a big trouble for me however, because now I use exclusively Gnome 3.