diff --git a/scripts/bootstrap/bootstrap-haskell b/scripts/bootstrap/bootstrap-haskell index 17f33d3..45af506 100755 --- a/scripts/bootstrap/bootstrap-haskell +++ b/scripts/bootstrap/bootstrap-haskell @@ -280,7 +280,20 @@ download_ghcup() { # we may overwrite this in adjust_bashrc cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file" - export PATH="\$HOME/.cabal/bin:${GHCUP_BIN}:\$PATH" + case ":\$PATH:" in + *:"${GHCUP_BIN}":*) + ;; + *) + export PATH="${GHCUP_BIN}:\$PATH" + ;; + esac + case ":\$PATH:" in + *:"\$HOME/.cabal/bin":*) + ;; + *) + export PATH="\$HOME/.cabal/bin:\$PATH" + ;; + esac EOF # shellcheck disable=SC1090 @@ -368,12 +381,38 @@ adjust_bashrc() { case $1 in 1) cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file" - export PATH="\$HOME/.cabal/bin:${GHCUP_BIN}:\$PATH" + case ":\$PATH:" in + *:"${GHCUP_BIN}":*) + ;; + *) + export PATH="${GHCUP_BIN}:\$PATH" + ;; + esac + case ":\$PATH:" in + *:"\$HOME/.cabal/bin":*) + ;; + *) + export PATH="\$HOME/.cabal/bin:\$PATH" + ;; + esac EOF ;; 2) cat <<-EOF > "${GHCUP_DIR}"/env || die "Failed to create env file" - export PATH="\$PATH:\$HOME/.cabal/bin:${GHCUP_BIN}" + case ":\$PATH:" in + *:"\$HOME/.cabal/bin":*) + ;; + *) + export PATH="\$PATH:\$HOME/.cabal/bin" + ;; + esac + case ":\$PATH:" in + *:"${GHCUP_BIN}":*) + ;; + *) + export PATH="\$PATH:${GHCUP_BIN}" + ;; + esac EOF ;; *) ;;