DEV Community


Automating my set-up on a fresh Ubuntu by using a bash script

anduser96 profile image Andrei Gatej Originally published at ・2 min read

Originally published at

The Github repository can be found here.

It usually takes me around 30 minutes - 1 hour to set up everything I need in order to start working on a new OS(in this case, Ubuntu). So I figured it would be worth the time spent on building a script that would automate all of this. Moreover, bash scripting has always been something cryptic to me, so I thought this was a good opportunity to get comfortable with writing such scripts.


Open your terminal in your preferred location and create a file that will eventually be invoked in order to install the programs you'd need.

# `vim` could be replaced with your text editor of choice(e.g `gedit`)
touch setup && vim $_

Paste the content of the file into the newly created file.

Run the script with:

sudo bash setup $HOME

We need sudo privileges because the script will install new programs on the OS and $HOME in order to properly place ZSH and to determine the user so we can add it to the docker group.

How it works

The file comprises functions that will install the needed programs. Each function follows this pattern: function installProgramToBeInstalled { }.

For example:

# ...

function installGit {
  format_output "installing git"

  sudo apt install -y git


function installDocker {
  format_output "installing docker"

  curl -s | bash

  usermod -aG docker $user

  su - $user

# ...

Then, in order to invoke all the functions, I've used this logic:

functions="$(cat $0 | egrep -o install[A-Z]+[A-Za-z]+)"
for f in $functions; do $f;done

$0 refers to the current file. With egrep -o install[A-Z]+[A-Za-z]+) we get all the install functions. Lastly, we loop through each function and invoke it.


Editor guide