Published on: February 18, 2014
Sometimes I wonder how I have missed things. Bash sripting and the .bash_(whatever)
files are one of those that I have heard about and never played with... whoops - my bad. For those of you who are using it and using it effectively, you will probably nod your head when I say - I should have done this years ago.
Never-the-less - here we are. What's a bash script, and what is the .bash_profile
? Bash is defined on Wikipedia as " a command processor, typically run in a text window, allowing the user to type commands which cause actions." Ok cool - I can handle that. .bash_profile
is a shell script that automatically runs when you open terminal.
I code on a Mac, so I'm speaking from that point of view, but most of this should also work on most Linux flavors.
So how do you get started? First you probably want to just find the .bash_profile
file, and be able to edit it. Fire up a terminal and type:
open -e ~/.bash_profile
Consider this your first bash script. open
will open up an application and if you pass in a file name, it will open that as well.
Don't go about just changing things in here quite yet, though. Most of this is added for things to actually work as expected. The PATH
item is a list of all the folders your terminal has access to from anywhere. The folders are seperated by a colon. You can add folders here, just be sure to not delete any unless you know it's something you don't need. It can wreck your day.
What we are going to do here, is add a line to load up a file that will get created in a bit. At the top of .bash_profile
, add the following:
[[ -f ~/.bashrc ]] && source ~/.bashrc
Now we are starting to get a little crazy. So what is this doing? The [[]]
is an if shortcut. So the line is a conditional, and a full list of the flags available are here. This particular call uses -f
and is going to return true if the file exists. The &&
is the command to run when the conditional is true. Source
is a command you run in terminal to add the file in memory so you can use it. You may/may not have a ~/.bashrc
file created. If you do - change the name to something else. Then, create that particular file.
In the file we just created, let's try to add something that will actually perform a task. Open up the ~/.bashrc
and add the following two lines:
alias bashrc="open -e ~/.bashrc"alias sb=". ~/.bashrc"
Save the file, and get back to the command prompt. Now type in . ~/.bashrc
. In case of confusion - let me explain what we just did.
Bash allows for a command called alias
to basically create a short cut. In our case, we made one that opens our .bashrc
, and the second sources it. What is the source
command? It's something that runs when you open terminal. I don't always want to close it and open it if I make a change. So you run the command as either source
or .
. We just did that as well with sb
for source bash, so our new aliases are available.
Go ahead and type in bashrc
and start editing. You can add all kinds of great aliases for constant bash commands you are running - like npm or git. For example I use:
alias npmsave="npm install $1 --save-dev"
We have already seen most of this, except for the $1
. This is a reference to what you pass in as a parameter to the alias. Now you need to type sb
to source your .bashrc
file. You may be wondering why we didn't use source
as the alias. I tried that, and had a bad day - don't use bash functions as aliases or you will loose your functions. You can get them back - but I'm not going to tell you how so you don't even try it :)
Once you have sourced your file, go to a folder with a package.json
file, and type in npmsave express
. Boom! New package installed, and saved in your config.
Hopefully after this you can see how great bash commands can make your workflow - they have helped out mine. I wish I had started sooner!
Kelly J Andrews - © 2020