I have put an echo in three profile scripts that shows the file name so that I can see the order they run.

When I log in I see.

/etc/profile
/etc/profile.d/color-ls
~/.bashrc
/etc/bashrc
$ alias ls
alias ls='ls --ignore=*.pyc --color'

Yet when I start a screen session I see

~/.bashrc
/etc/bashrc
/etc/profile.d/color-ls
$ alias ls
alias ls='ls --color=tty'

The alias I've set up in ~/.bashrc is being overwritten by color-ls but only within screen, is there any round this annoying behaviour?

link|improve this question
feedback

1 Answer

up vote 1 down vote accepted

You should first read man bash (section 'INVOCATION') about when which file is actually used.

Your little 'trace' shows you that your ~/.bashrc always sources /etc/bashrc which is then calling color-ls ... or not, depending on code in /etc/bashrc as it seems.

So, two ways to solve the problem:

  • Check, under which circumstances /etc/bashrc decides to not source color-ls.
  • Setup your aliases after your ~/.bashrc processes /etc/bashrc.
link|improve this answer
Thorough yet succinct answer. Thanks. – StephenPaulger Feb 3 '11 at 17:26
feedback

Your Answer

 
or
required, but never shown

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