Bash learning...
These instructions can be used within an Ubuntu OS or an Ubuntu instance running within WSL.
Install WSL
wsl --install
Install Ubuntu
# Check available versions
wsl --list --online
wsl --install -d Ubuntu-22.04
- Create a Docker container with all the tooling incl. Starship configured.
Create an SSH key for GitHub, Azure DevOps or whatever source control...
# For example
ssh-keygen -C "SSH Key for GitHub" -t rsa -b 2048 -f ~/.ssh/github
# Enter a passphrase when prompted
Add the contents of github.pub - as per the above example - to GitHub.
NOTE
If you have multiple SSH keys then use a config file, placed within .ssh
#Example configuration
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github
AddKeysToAgent yes
Host vs-ssh.visualstudio.com
HostName vs-ssh.visualstudio.com
User git
IdentityFile ~/.ssh/azdo
AddKeysToAgent yes
This tool is useful to load SSH keys with passphrases when you start your terminal.
# Install Keychain
sudo apt install keychain
Then add the following to .bashrc
# For example
eval `keychain --eval --agents ssh ssh_file1 ssh_file2`
Reload bashrc . ~/.bashrc
sudo apt update -y -qq
sudo apt upgrade -y -qq
sudo apt install build-essential curl file git jq zip unzip shellcheck -y -qq
# Install Az Cli
UBUNTU_VERSION=$(lsb_release -rs)
curl --silent https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add
curl --silent "https://packages.microsoft.com/config/ubuntu/$UBUNTU_VERSION/prod.list" | sudo tee /etc/apt/sources.list.d/msprod.list
curl --silent --location https://aka.ms/InstallAzureCLIDeb | sudo bash
Create a .bash_aliases file and add the following:
alias ls='ls -alhF --color --group-directories-first'
alias tfapply='source ./scripts/apply.sh'
alias tfauth='source ./scripts/auth.sh'
alias tfinit='source ./scripts/init.sh'
alias tflint='terraform fmt --recursive'
alias tfoutput='source ./scripts/output.sh'
alias tfplan='source ./scripts/plan.sh'
alias tfset='source ./scripts/setup.sh'
Starship is a great tool for configuring your command prompt to provide more information...for example the Git branch you're in etc.
I use Jetbrains font to get the additional symbols for my Starship configuration.
curl https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip --output JetBrainsMono-2.304.zip
unzip JetBrainsMono-2.304.zip -d /usr/share/fonts
#Restart the terminal then set the terminal preferences to use the downloaded font
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-7.0s
# Check SDK is installed
dotnet --list-sdks
# Might need to copy the sdk to lib...
sudo cp -r /usr/share/dotnet/* /usr/lib/dotnet/
# This is generally available from the above command
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-7.0
I wanted to logut my az cli sessions when the terminal exited; after lots of faffing around I read an article that suggested I need a trap defined within my .bashrc file e.g.
# trap for terminal exit
trap az_logout EXIT
NOTE this trap above depends on a function called az_logout. So I decided to load my functions in .bashrc too e.g.
# load functions
if [ -d ~/source/github/Terraform/scripts ]; then
for file in ~/source/github/Terraform/scripts/functions/*.sh; do
. "$file"
done
fi
NOTE the above functions are in my Terraform repo