I have a one-line .bashrc file in my home directory:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

But it is not creating the alias. Why might that be?

link|improve this question

feedback

4 Answers

up vote 4 down vote accepted

In OSX, .bash_profile is used instead of .bashrc.

And yes, the .bash_profile file should be located in /Users/YourName/
(In other words, ~/.bash_profile)

For example, /Users/Aaron/.bash_profile

link|improve this answer
2  
This is not the right answer. Aliases are not inherited, so, if you only define them in .bash_profile, they won't be defined in non-login shells (eg when you run bash inside bash). – LaC Feb 13 '11 at 18:49
feedback

.[bash_]profile and .bashrc can be used on both OS X and Linux. The former is loaded when the shell is a login shell; the latter when it is not. The real difference is that Linux runs a login shell when the user logs into a graphical session, and then, when you open a terminal application, those shells are non-login shells; whereas OS X does not run a shell upon graphical login, and when you run a shell from Terminal.app, that is a login shell.

If you want your aliases to work in both login and non-login shells (and you usually do), you should put them in .bashrc and source .bashrc in your .bash_profile, with a line like this:

[ -r ~/.bashrc ] && source ~/.bashrc

This applies to any system using bash.

link|improve this answer
5  
+1 with the caveat that everything in .bashrc will be run again for sub-shells (and subsub-, subsubsub-, etc), so e.g. PATH=$PATH:/my/private/binaries will lead to PATH bloat. See this for a workaround. – Gordon Davisson Feb 12 '11 at 18:51
True. Since exported instance variables are inherited, I just set them in .profile instead of .bashrc. – LaC Feb 13 '11 at 11:28
feedback

It is not being aliased because .bash_profile is used instead of .bashrc on Mac OS X.

So you have two options:

  • Put the alias in your ~/.bash_profile

  • Or source your .bashrc from your .bash_profile by adding this line to the .bash_profile:

    . ~/.bashrc

link|improve this answer
feedback

Or create a sym link called .bash_profile pointed at your .bashrc

ln -s .bashrc .bash_profile
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.