ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

sdkmanのinit.shでエラー出てた

Gradleを使うときに
sdkmanを使って、Gradleをインストールしたのですが

インストール後にsource "/Users/yuzu/.sdkman/bin/sdkman-init.sh"
.bashrcだったり.zshrcにインストールに書いてねって言われて書きますよね

書いてからターミナルを立ち上げると

/Users/yuzu/.sdkman/bin/sdkman-init.sh:145: file exists: /Users/yuzu/.sdkman/var/version
/Users/yuzu/.sdkman/bin/sdkman-init.sh:145: file exists: /Users/yuzu/.sdkman/var/version

ってエラーが毎回の用に出るのをなんとかしたくて調べた

原因

問題の行を見てみると

echo ${SDKMAN_REMOTE_VERSION} > "$SDKMAN_VERSION_TOKEN"

バージョン情報をリダイレクトで書き込んでる

自分が使ってるzshはデフォルトでリダイレクトによる上書きを禁止してるらしい

cd ~/
touch test.txt
echo "hoge" > test.txt # error: file exsits

解決

解決作になってるかはわかりませんが
.zshrcに上書きを許可する設定を書く

# 上書き禁止解除
setopt clobber

これをsource "/Users/yuzu/.sdkman/bin/sdkman-init.sh"
書いてる行の前に設定するようにすれば出なくなりました