#!/usr/bin/env bash set -euo pipefail RC_FILE="${RC_FILE:-$HOME/.bashrc}" DOTNET_DIR="${DOTNET_DIR:-$HOME/.dotnet}" begin_marker="# >>> dotnet user-local env >>>" end_marker="# <<< dotnet user-local env <<<" block_content=$(cat < "${tmp}" mv "${tmp}" "${RC_FILE}" fi { echo echo "${block_content}" } >> "${RC_FILE}" # ✅ 关键修复:不要依赖 source ~/.bashrc(非交互可能直接 return) # 直接在当前脚本进程里让环境变量生效 export DOTNET_ROOT="${DOTNET_DIR}" export PATH="${DOTNET_ROOT}:${DOTNET_ROOT}/tools:${PATH}" echo "== DOTNET_ROOT ==" echo "${DOTNET_ROOT}" echo echo "== which dotnet ==" command -v dotnet || true echo # 检测 dotnet 是否实际安装在 ~/.dotnet if [[ ! -x "${DOTNET_ROOT}/dotnet" ]] && ! command -v dotnet >/dev/null 2>&1; then echo "ERROR: dotnet 仍然不可用。" echo "原因通常是:${DOTNET_ROOT}/dotnet 不存在(还没安装 .NET SDK/Runtime)" echo echo "你可以检查:" echo " ls -lh ${DOTNET_ROOT}" echo echo "如果你本来是装在别的目录(例如 /usr/share/dotnet),就把 DOTNET_DIR 改成那个路径:" echo " DOTNET_DIR=/usr/share/dotnet ./setup_dotnet_env.sh" exit 2 fi echo "== dotnet --info ==" dotnet --info echo echo "Done. Persistent config written to: ${RC_FILE}"