
To make an alias for the Terminal in OS X, you can either put the aliases in .bash_profile or .bashrc. What is the difference between the two and why would I choose to put aliases in one and not the other?
Source ~/.bash_profile Now try to type few letters of command and press [TAB], you will see the auto-completed command or auto-suggested commands(for more than one matches). The command will complete the remaining of the file name or directory.
daviesgeekdaviesgeek
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.
When you login (type username and password) via console, either sitting at the machine, or remotely via ssh: .bash_profile is executed to configure your shell before the initial command prompt.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.
On OS X, Terminal by default runs a login shell every time, so this is a little different to most other systems, but you can configure that in the preferences.
jherranX11 will look at your .bashrc while a 'regular' Terminal will look at .bash_profile
However, if you add the following to your .bash_profile, you can then move everything into your .bashrc file so as to consolidate everything into one place instead of two:
jherranFor macOS, the code to put into .bash_profile to consolidate everything into .bashrc is the following:
This is more specific for Mac terminal user.
TLDR; use .bash_profile for your aliases.
The way the different initialisation files work together is a bit more complicated, and there are some important special cases in OSX. Here are the highlights:
.bash_profile is called. Thus the TLDR advice above..bashrc is also an option, but that will be called every time you create a subshell (i.e., invoke bash), which can create inefficiency if you update a variable within it (e.g., PATH=/bin/foo:$PATH).bashrc from .bash_profile are quite common. I don't recommend that, but it is a preference.