0x01 Java

$HOME/.data/java/current

将 Java SDK 文件夹放在同级目录

ln -s $HOME/.data/java/graalvm-v17.0.14 $HOME/.data/java/current

0x02 Maven

$HOME/.data/maven/current

将 Maven SDK 文件夹放在同级目录

ln -s $HOME/.data/maven/v3.9.10 $HOME/.data/maven/current

$HOME/.data/maven/current/conf/settings.xml

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <localRepository>/root/.data/maven/current/repo</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>
  <profiles>
  </profiles>
</settings>

0x03 Go

$HOME/.data/go/current

将 Go SDK 文件夹放在同级目录

ln -s $HOME/.data/go/v1.23.5 $HOME/.data/go/current

0x04 Node.js

$HOME/.data/nodejs/current

将 Node.js SDK 文件夹放在同级目录

ln -s $HOME/.data/nodejs/v23.7.0 $HOME/.data/nodejs/current

$HOME/.data/nodejs/current/npmrc

固定NPM全局包安装位置以及定义NPM缓存目录

prefix=${NODE_HOME}
cache=${NODE_HOME}/lib/node_cache
global-bin-dir=${NODE_HOME}/bin

0x05 Rust

$HOME/.data/rust/current

# 先在 .zshrc 中把环境变量配置一下
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

0x06 dotNet

$HOME/.data/dotnet/current

ln -s $HOME/.data/dotnet/v8.0.414 $HOME/.data/dotnet/current 

0xFF Environment Variables

/etc/zsh/zshenv

添加到 zshenv 文件中

export ZDOTDIR=$HOME/.config/zsh
export XDG_CONFIG_HOME=$HOME/.config
export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.data
export XDG_STATE_HOME=$HOME/.state

$HOME/.config/zsh/.zshrc

添加到 .zshrc 文件中

# java
export JAVA_HOME="$XDG_DATA_HOME"/java/current
export PATH=$PATH:$JAVA_HOME/bin

# Maven
export MAVEN_HOME="$XDG_DATA_HOME"/maven/current
export PATH=$PATH:$MAVEN_HOME/bin

# go
export GOROOT="$XDG_DATA_HOME"/go/current
export GOPATH="$XDG_CACHE_HOME"/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加 GOROOT 和 GOPATH 到 PATH 中

export GOENV="$GOPATH"/env
export GOMODCACHE="$GOPATH"/pkg/mod
export GOCACHE="$GOPATH"/go-build

# nodejs
export NODE_HOME="$XDG_DATA_HOME"/nodejs/current
export NODE_PATH="$NODE_HOME"/lib/node_modules
export PATH=$PATH:$NODE_HOME/bin:$NODE_PATH       # 添加 NODE_HOME 和 NODE_PATH 到 PATH 中
export NPM_CONFIG_GLOBALCONFIG="$NODE_HOME"/npmrc # NPM全局配置固定
export PNPM_HOME="$NODE_HOME"/lib/pnpm_data

# Rust
export RUST_HOME="$XDG_DATA_HOME"/rust
export RUSTUP_HOME="$RUST_HOME"/rustup
export CARGO_HOME="$RUST_HOME"/cargo
export PATH=$PATH:$CARGO_HOME/bin

# dotNet
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_ROOT="$XDG_DATA_HOME"/dotnet/current
export DOTNET_CLI_HOME="$DOTNET_ROOT"/cache
export NUGET_PACKAGES="$DOTNET_ROOT"/cache/packages
export NUGET_PLUGINS_CACHE_PATH="$DOTNET_ROOT"/cache/plugin-cache
export NUGET_HTTP_CACHE_PATH="$DOTNET_ROOT"/cache/http-cache
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=0
export DOTNET_ADDITIONAL_DEPS=""
export DOTNET_BUNDLE_EXTRACT_BASE_DIR="$DOTNET_ROOT"/corefx
export PATH=$PATH:$DOTNET_ROOT