.bash_profile not being read

20,842

Solution 1

Could you describe how do you test these 2 files? Did you try login or non-login shell? Here is the difference:

When you login your system and see the command line prompt, it’s a login shell, and it executes these files in order:

/etc/profile
~/.bash_profile
~/.bashrc
/etc/bashrc

A non-login shell will only execute the two files in order:

/etc/bashrc
~/.bashrc

If you just simply start a bash shell by "bash", it is a non-login shell and ~/.bash_profile will not be invoked. If you expect the variables to be set even when running non-login shell, you should put them into ~/.bashrc.

Solution 2

This is normal, .bash_profile is sourced for login shells, .bashrc is sourced for interactive non-login shells. In CentOS the top of .bash_profile usually has:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

So you can put things in .bashrc.

Mac OS X Terminal reads .bash_profile when you open a new windows. gnome-terminal can be made to do that with Run command as a login shell.

Share:
20,842

Related videos on Youtube

csteifel
Author by

csteifel

Updated on September 18, 2022

Comments

  • csteifel
    csteifel over 1 year

    So I am using CentOS 6.3 a fresh install and I was trying to add things to my path for OpenMPI so I edited my .bash_profile file to read:

    FOO='test'
    export FOO
    
    # Add support for MPI
    PATH=$PATH:/usr/lib64/openmpi/bin
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    
    
    
    export PATH
    

    Which apparently isn't being read when I start up a bash shell, my $PATH is without the /usr/lib64/openmpi/bin path and FOO doesn't exist when I try to echo $FOO

    .bashrc is read just fine and if I do source ~/.bash_profile FOO is created as well as my $PATH being edited properly but it will not run .bash_profile on its own so if I could get any help that would be great.