Which profile, .bashrc or .bash_profile, is the appropriate spot for ssh-agent? I'm looking for an answer that explains the different between an interactive shell and a login shell.

3 Answers 3


It depends somewhat on how you personally use shells.

An interactive shell is anything that has a terminal connected to its input and output. Login shells are spawned by /bin/login. Login shells source your .bash_profile. Most terminal emulators such as xterm start an interactive shell that is not a login shell. Interactive, non-login shells source your .bashrc.

What I typically do is have my .bash_profile source my .bashrc (after checking if it has already been sourced), and then I put my ssh-agent setup in my .bashrc.

  • What's the check in .bash_profile to see if .bashrc has been sourced already? Sep 1, 2009 at 21:35
  • 2
    Nothing special. I generally just check to see if a variable I set in .bashrc is set.
    – meastham
    Sep 1, 2009 at 22:20

You should use .bash_profile because .bashrc is sourced for every interactive shell and you only need one agent per login session.


ssh-agent is a wrapper program.
You would typically want to do a "exec ssh-agent bash" at the start.

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.