As the title suggests I am asking about the main differences between .bashrc and /etc/profile. What I know is that .bashrc is a shell script that runs on login(I guess). And I know /etc/profile runs on ssh login or terminal login I also guess. Could someone please steer me in the right direction here?


I think this answer sums it up nicely:

From man bash:



When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands 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. The --noprofile option may be used when the shell is started to inhibit this behavior.


When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.


/etc/profile is global for all users. ~/.bashrc is per user login where you can set up your favorite environment.

  • 1
    Ah. Thank you very much. But I would like a little bit more information than this. Perhaps, when each one is run. – NerdOfCode Jul 25 '17 at 20:26
  • 1
    This is not very clear. Could you please expand on everything? – wjandrea Jul 25 '17 at 20:29

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.