Installation Instructions
Step-by-step guide to install and configure Bash Dev Env
| Title | Description | Updated |
|---|---|---|
| Installation Instructions | Step-by-step guide to install and configure Bash Dev Env | 2026-03-01 |
| How Does It Work | Technical overview of Bash Dev Env architecture and internals | 2026-03-01 |
| How to Contribute | Guidelines for contributing to Bash Dev Env | 2026-03-01 |
Allows to install, upgrade, configure and automatically maintain main softwares used by developers. You can use this script under wsl or virtualbox ubuntu based images.
Follow these indications to Install & Configure. You can see a non exhaustive list of features provided by this tool in this chapter Features presentation.
This is a collection of several bash installation scripts using bash tools framework allowing to easily install several softwares on ubuntu based image (under wsl or virtual box or native installation).
please follow Dev-env Installation instructions
This project will install, update and configure these non exhaustive dependencies:
Awsume (alternative to Saml2Aws)
ShellBash with
BashTools provides some useful bash tools:
CodeCheckers
Composer
ComposerDependencies
ShellZsh: instead of using ShellBash, you can use Zsh shell with
Fortune (display help message at each bash/zsh login based on the installed softwares)
Fzf - fzf is a general-purpose command-line fuzzy finder. It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostNames, bookmarks, git commits, etc. Fzf configuration comes with fd, fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find’s powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.
Git (default ~/.gitconfig with main branch, email, name, default aliases, …)
GitHook
Hadolint (docker linter)
Java dependency needed by Plantuml
Kubernetes
MandatorySoftwares
MLocate (command locate + indexing configuration) -
Node (install n + nodejs)
NodeDependencies
OpenVpn
Oq
Plantuml
Python dependency for Awsume
Saml2Aws (alternative to Awsume)
VsCodeExtensionProfiles
Xvfb (not used in any profile for now, used to launch headless chrome by aws cli)
Dependencies for WSL only
code command from
wsl prompt.Dependencies for virtual box only
install script has been designed to be executed several times over the time. Anacron dependency configures a
periodical execution of this script.
install script can update or completely rewrite config files that can be personal like .bashrc but don’t worry these
files are backed up in the backup directory of this project.
The documentation site is built with Hugo using the Docsy theme.
To preview the documentation locally:
hugo mod get -u to download dependencieshugo server -D to start the local serverInstall new wsl distribution (from powershell):
wsl --install -d Ubuntu-22.04
As root:
# if necessary create user
adduser wsl
# change hostname to avoid confusion with your current distribution
oldName="$(hostname)"
newName="UbuntuTest"
hostname NewName
sed -i -E -e 's/${oldName}/${newName}/' /etc/hosts
The folder /mnt/wsl is shared between all the distro, we simply mount / in a given folder each time we launch a shell if necessary:
mkdir "/mnt/wsl/${WSL_DISTRO_NAME}"
sudo mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}"
mkdir "/mnt/wsl/${WSL_DISTRO_NAME}"
sudo mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}"
if [[ ! -d "/mnt/wsl/${WSL_DISTRO_NAME}" ]]; then
mkdir -p "/mnt/wsl/${WSL_DISTRO_NAME}"
sudo mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}"
fi
if [[ ! -d "/mnt/wsl/${WSL_DISTRO_NAME}" ]]; then
mkdir -p "/mnt/wsl/${WSL_DISTRO_NAME}"
sudo mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}"
fi
MASTER_DISTRO=Ubuntu-20.04
if [[ -d "/mnt/wsl/${MASTER_DISTRO}" ]]; then
mkdir -p ~/projects/bash-dev-env
sudo mount --bind \
"/mnt/wsl/${MASTER_DISTRO}/home/wsl/fchastanet/bash-dev-env" \
~/projects/bash-dev-env
fi
# from previous distro, sync your important folders
sudo rsync --info=progress2 --no-compress -W -ax projects /mnt/wsl/UbuntuTest/home/wsl
sudo rsync --info=progress2 --no-compress -W -ax fchastanet /mnt/wsl/UbuntuTest/home/wsl
sudo rsync --info=progress2 --no-compress -W -ax /var/lib/docker /mnt/wsl/UbuntuTest/var/lib
# alternatively, you can sync all the necessary directories at once
sudo rsync --info=progress2 --no-compress -W -ax \
--include=/home/wsl/.history \
--include=/home/wsl/projects \
--include=/home/wsl/fchastanet \
--include=/var/lib/docker \
--exclude='*' / /mnt/wsl/UbuntuTest
# on target distribution, don't forget to restart docker daemon when the sync is done
sudo service docker restart
Step-by-step guide to install and configure Bash Dev Env
Technical overview of Bash Dev Env architecture and internals
Guidelines for contributing to Bash Dev Env