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
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?Noah Campbell– Noah Campbell2009-09-01 21:35:29 +00:00Commented Sep 1, 2009 at 21:35
-  2Nothing special. I generally just check to see if a variable I set in .bashrc is set.meastham– meastham2009-09-01 22:20:30 +00:00Commented 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.
