I recently made a blog post about automating tasks with bash scripts and why it can be useful. I just finished a script that can (mostly) automate my setup in Linux. The script is called setup.sh , and can be found on my Github repo . Virtualbox: My Testing Environment I wanted to test my script in a controlled environment, and decided to use Virtualbox to setup a virtual environment to work in. Virtualbox also gave me the option to create snapshots of my virtual machine. When my script made changes to my machine, I could easily go back to a previous version and undo the changes. Here is a good resource if you want to learn more about virtual machines . Vagrant: Automated Virtual Machines I didn't want to go through the process of setting up a virtual machine and having to install an operating system manually, so I automated this with Vagrant . I didn't know anything about Vagrant before this project, but I found a video on YouTube that did a good job at helping me get start...