First and foremost my .bash_profile is 90% alias’ 10% including other stuff
So without further ado, opening my .bash_profile I’ll see this right away.
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
Woah, hold it.. What’s the difference between .bashrc and .bash_profile?
According to the bash man page
.bash_profile is executed for login shells (Imagine tunneling through ssh to a remove server.), while
.bashrc is executed for interactive non-login shells.
The exception to the rule being Mac OS which runs a login shell by default for each new terminal window, calling
.bash_profile instead of .bashrc.
Most of the time I don’t want to maintain two separate config files for login and non-login shells (namely .bashrc and .bash_profile)
When I set a
PATH, I want it to apply to both.
Therefore i’m sourcing PATH and common settings in
Because of this, I’ll be including (and explaining) the contents of both files in this post.
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
This one shouldn’t require much explanation, if you’re reading this part, I’ll assume you already understand the concept of sourcing.
Almost every apache/nginx/litespeed/whatever-linux-based-host has that kind of mumbo-jumbo at the top of their users .bash_profile or .bashrc files.
But to the non-initiated of you that doesn’t know, this fetches the system-wide bash definitions.
Moving on we’ll find all sorts of mumbo-jumbo magic.
# -l use a long listing format # -h Human readable sizes # -a Do not ignore entries starting with . (aka. show hidden files) # --color Colorizes the output alias ls="ls -lha --color --time-style='+%Y-%m-%d %H:%M:%S'" alias myip="curl https://wtfismyip.com/text" alias phpunit="php ~/bin/phpunit.phar" alias wp="php ~/bin/wp-cli.phar" alias diff="colordiff -bur" alias ccat="pygmentize"
At work I have the pleasure (others would think unfortunate.) of using a Mac, On which
--time-style Doesn’t work.
(Additionally i need
ls -G for colored output, which in other systems means grouping, not colors. . . )
If you’re feeling comfortable installing gnu coreutils, you can do
brew install coreutils and get
--time-style to work that way.
Obviously homebrew (Mac OS 3rdparty package manager) is required.
This one have definetily saved me some typing on the keyboard. A good developer is lazy. never writes the same thing twice.
alias brewit='brew update && brew upgrade'
And this too.
alias reload='. ~/.bash_profile'
Sometimes every now and then, I have some script that needs testing on a different PHP version than the server’s running.
For that case I have a seperate user set up (Don’t want to eff everything else up in the process), with this frisky oneliner in the .bash_profile.
Or this …
This one i got from a fellow developer.
Back to that
.bashrc file of mine, manipulating
PATH variables is always fun stuff.
If you have already read my previous post about installing vim on a shared host. You may already know why, and some edge cases where manipulating
PATH can be a good idea.
Once again i’ll assume you are somewhat tech-sawy reading through all this, but in case you don’t know:
PATH is an environment variable on Unix-like operating systems, DOS, OS/2, and Microsoft Windows, specifying a set of directories where executable programs are located. – Wikipedia
Please feel free to leave your .bash_profile/.bashrc contents or even just snippets from it, in the comment section below.
For niceness (Yes, I just made that word up) you can wrap it in <code></code> tags.