Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

According to the bash invocation sequence, if a non-interactive, non-login bash shell is invoked via ssh, it's supposed to source ~/.bashrc. This works just fine with the OS X-shipped Bash 3.2.48(1)-release.

However, when I install bash 4.2.8(2)-release and set that as my login shell, executing a command via ssh (e.g. ssh <host> <command>) doesn't source my ~/.bashrc.

Does anybody know what's wrong, or how I can work around this?

share|improve this question

Probably way late, but I've run into this issue, and my solution was adding

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

to my ~/.bash_profile.

share|improve this answer
Unfortunately I don't have Bash 4 installed anymore so I can't test this out (I'm now using Fish), but I have some recollection of trying exactly that and having it not work. From what I recall, the problem is the shell was being invoked as a non-interactive, non-login shell, so it wasn't sourcing any of the usual user-controlled init scripts. – Kevin Ballard Oct 11 '12 at 23:42

You can run bash through ssh with the --login option. Like so:

ssh <host> bash --login -c "command"
share|improve this answer
Not applicable in my case. SSH is being run by another utility (specifically, git). I have no control over its invocation. – Kevin Ballard Apr 17 '11 at 3:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .