From 34cf7f1aebc95b5adca72fdf6f34db33007dbaa0 Mon Sep 17 00:00:00 2001 From: Raphael R <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 18:33:43 +0100 Subject: [PATCH 1/3] Reset SDKMAN_DIR if it has wrong owner When `su`-ing to another user, environment variables carry over. As a result, `sdk` will point to the installation of the original user, not the one running the current shell. Thus: Reset `$SDKMAN_DIR` if the directory it points at belongs to a user other than the current one. --- src/main/bash/sdkman-init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/bash/sdkman-init.sh b/src/main/bash/sdkman-init.sh index e6328a0a3..e3747c357 100644 --- a/src/main/bash/sdkman-init.sh +++ b/src/main/bash/sdkman-init.sh @@ -25,7 +25,7 @@ if [ -z "$SDKMAN_CANDIDATES_API" ]; then export SDKMAN_CANDIDATES_API="@SDKMAN_CANDIDATES_API@" fi -if [ -z "$SDKMAN_DIR" ]; then +if [ -z "$SDKMAN_DIR" ] || [ $(ls -ld "${SDKMAN_DIR}" | awk '{ print $3 }') != $(whoami) ]; then export SDKMAN_DIR="$HOME/.sdkman" fi From bb48546e9e74e3bdc7af7326360712c27045a221 Mon Sep 17 00:00:00 2001 From: Raphael R <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 23:26:59 +0100 Subject: [PATCH 2/3] Introduce sdkman_owner variable for clarity --- src/main/bash/sdkman-init.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/bash/sdkman-init.sh b/src/main/bash/sdkman-init.sh index e3747c357..1d536b0a9 100644 --- a/src/main/bash/sdkman-init.sh +++ b/src/main/bash/sdkman-init.sh @@ -25,9 +25,11 @@ if [ -z "$SDKMAN_CANDIDATES_API" ]; then export SDKMAN_CANDIDATES_API="@SDKMAN_CANDIDATES_API@" fi -if [ -z "$SDKMAN_DIR" ] || [ $(ls -ld "${SDKMAN_DIR}" | awk '{ print $3 }') != $(whoami) ]; then +sdkman_owner=$(ls -ld "${SDKMAN_DIR}" | awk '{ print $3 }') +if [ -z "$SDKMAN_DIR" ] || [ "${sdkman_owner}" != "$(whoami)" ]; then export SDKMAN_DIR="$HOME/.sdkman" fi +unset sdkman_owner # infer platform SDKMAN_PLATFORM="$(uname)" From 19f161fe6d3c39d39912c55cd0a16677ef7144b7 Mon Sep 17 00:00:00 2001 From: Raphael R <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 23:47:19 +0100 Subject: [PATCH 3/3] Prefer double-bracket test. --- src/main/bash/sdkman-init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/bash/sdkman-init.sh b/src/main/bash/sdkman-init.sh index 1d536b0a9..3e306d47d 100644 --- a/src/main/bash/sdkman-init.sh +++ b/src/main/bash/sdkman-init.sh @@ -26,7 +26,7 @@ if [ -z "$SDKMAN_CANDIDATES_API" ]; then fi sdkman_owner=$(ls -ld "${SDKMAN_DIR}" | awk '{ print $3 }') -if [ -z "$SDKMAN_DIR" ] || [ "${sdkman_owner}" != "$(whoami)" ]; then +if [[ -z "$SDKMAN_DIR" || "${sdkman_owner}" != "$(whoami)" ]]; then export SDKMAN_DIR="$HOME/.sdkman" fi unset sdkman_owner