Today I changed the colors in my bash shell and added the current git branch to the command line. The git branch was actually what I was going for…the colors were a nice bonus I found along the way 😄
Note added Oct 2018 for clarity: I use MacOS which by default uses the bash shell in both the Terminal program and in my text editors’ command line. If you use a different shell or framework like ZSH, or one of the many windows shells, your implementation of the below would be slightly different.
I grazed the surface of this a while back, and learned a bit more about shell scripting today! The main thing was learning about the prompt script
PS1 which determines what shows on the command line and how it looks. By default, mine was set up like this:
I was fine with this, but wanted to also add in the git branch. This YouTube video prompted this whole rabbit hole and led me to a gist which shows how to figure out what git branch you’re on and add it to the command line. But a simple copy paste (without really understanding the script) gave me a longer command prompt:
No good! So then I found this article which did a good job explaining what all the letters and numbers in the script mean. For example:
Now we’re getting somewhere! So I edited the script a bit, found some additional color options (or even more if I want to adjust later), and now I’ve got a concise prompt with colors I like. I also created aliases for the colors to make the script a bit easier to read. Here’s the final outcome:
Update 2019: I refined this more than once! Latest post encapsulating all of my updates is here.
One thing to note: rather than restarting Terminal every time you make changes to the
.bashrc file where all of these scripts go, you can just re-source it:
Then all the new colors, shortcuts, or scripts are available in the current bash session. Note here that my
.bash_profile file is already pointed to
After I got it working in Terminal, I went to Atom and opened the terminal there. The colors were all wrong! Turns out this is because Terminal adjusts colors for better contrast, so (on my screen at least) “blue” looked more purple, but the shell in Atom doesn’t make these adjustments.
Thankfully the terminal package I use (platformio-ide-terminal) lets you change the ANSI colors, so I did this to match the default colors in Terminal. Voila! Great, consistent, perfect-contrast colors no matter which shell I’m using.
All of this took a good few hours out of my day. So much for working on the actual work I planned to do 😂