@@ -0,0 +1,136 @@
|
||||
# ============================================================================
|
||||
# DevContainer .bashrc 追加配置
|
||||
# 由 Dockerfile 通过 sed 替换占位符后追加到 ~/.bashrc
|
||||
# ============================================================================
|
||||
|
||||
# 本地二进制路径(必须优先于 NVM)
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
||||
# NVM 配置
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||
|
||||
# Node.js 镜像配置
|
||||
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
|
||||
export npm_config_registry=https://registry.npmmirror.com
|
||||
export YARN_REGISTRY=https://registry.npmmirror.com
|
||||
export ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
|
||||
|
||||
# Python/UV 配置
|
||||
export PATH="{{NODE_PATH}}:{{BIN_PATH}}:$PATH"
|
||||
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
export UV_LINK_MODE=copy
|
||||
export PYTHONUNBUFFERED=1
|
||||
alias uv-python='uv run python'
|
||||
alias uv-pip='uv run pip'
|
||||
|
||||
# 语言和区域设置
|
||||
export LC_ALL=zh_CN.UTF-8
|
||||
export LC_TIME=zh_CN.UTF-8
|
||||
export LANG=zh_CN.UTF-8
|
||||
|
||||
# 其他配置
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=false
|
||||
export EDITOR=vim
|
||||
export VISUAL=vim
|
||||
export LESSCHARSET=utf-8
|
||||
|
||||
# Jujutsu (jj) 补全
|
||||
if command -v jj >/dev/null 2>&1; then
|
||||
source <(jj util completion bash 2>/dev/null)
|
||||
fi
|
||||
|
||||
# 别名配置
|
||||
alias ll='ls -alhF --color=auto'
|
||||
alias date='date "+%F %T %p %A %B"'
|
||||
export TIME_STYLE='+%Y-%m-%d %H:%M:%S'
|
||||
|
||||
# Python 路径
|
||||
export PYTHONPATH=/workspace:$PYTHONPATH
|
||||
|
||||
# NVM IO.js 镜像
|
||||
export NVM_IOJS_ORG_MIRROR="https://iojs.org/dist"
|
||||
|
||||
# Claude Code 启动函数(参数透传至 runcc.sh,支持 -n/--name 走 /rename 持久化)
|
||||
cc() { {{BIN_PATH}}/runcc.sh "$@"; }
|
||||
|
||||
# 模型快捷方式: cc51, cc51 -n 后端, cc -n 后端 51 ...
|
||||
alias cc45='cc 45'
|
||||
alias cc45a='cc 45a'
|
||||
alias cc46='cc 46'
|
||||
alias cc47='cc 47'
|
||||
alias cc5='cc 5'
|
||||
alias cc5t='cc 5t'
|
||||
alias cc51='cc 51'
|
||||
|
||||
# OpenCode 启动函数(参数透传至 runoc.sh)
|
||||
oc() { {{BIN_PATH}}/runoc.sh "$@"; }
|
||||
|
||||
# 模型快捷方式: oc51, oc 51 ...
|
||||
alias oc45='oc 45'
|
||||
alias oc45a='oc 45a'
|
||||
alias oc45f='oc 45f'
|
||||
alias oc46='oc 46'
|
||||
alias oc46v='oc 46v'
|
||||
alias oc46vf='oc 46vf'
|
||||
alias oc47='oc 47'
|
||||
alias oc5='oc 5'
|
||||
alias oc5t='oc 5t'
|
||||
alias oc51='oc 51'
|
||||
|
||||
# tmux pane 级模型继承:从 pane option 读取模型配置(由 runcc.sh 写入)
|
||||
# 覆盖 session 级环境变量,实现同 session 不同 pane 的模型隔离
|
||||
if [ -n "${TMUX:-}" ]; then
|
||||
_model="$(tmux show-option -pv @anthropic_model 2>/dev/null || true)"
|
||||
if [ -n "$_model" ]; then
|
||||
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$_model"
|
||||
export ANTHROPIC_DEFAULT_SONNET_MODEL="$_model"
|
||||
export ANTHROPIC_DEFAULT_OPUS_MODEL="$_model"
|
||||
fi
|
||||
unset _model
|
||||
|
||||
_oc_model="$(tmux show-option -pv @opencode_model 2>/dev/null || true)"
|
||||
if [ -n "$_oc_model" ]; then
|
||||
export OPENCODE_MODEL="$_oc_model"
|
||||
fi
|
||||
unset _oc_model
|
||||
fi
|
||||
|
||||
# Docker 组提示(仅在需要时显示)
|
||||
if [ "${DOCKER_ENABLED:-true}" = "true" ] && [ -S /var/run/docker.sock ] && ! groups | grep -q docker; then
|
||||
export DOCKER_GROUP_REQUIRED=1
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# VCS 感知提示符(覆盖 devcontainer 默认,支持 jj bookmark 显示)
|
||||
# ============================================================================
|
||||
# 在 bashrc 加载时检测 jj 仓库(只需一次,避免每次提示都调用 jj root)
|
||||
__JJ_REPO=0
|
||||
if command -v jj >/dev/null 2>&1 && jj root >/dev/null 2>&1; then
|
||||
__JJ_REPO=1
|
||||
fi
|
||||
|
||||
__vcs_prompt() {
|
||||
local userpart='`export XIT=$? \
|
||||
&& [ ! -z "${GITHUB_USER:-}" ] && echo -n "\[\033[0;32m\]@${GITHUB_USER:-} " || echo -n "\[\033[0;32m\]\u " \
|
||||
&& [ "$XIT" -ne "0" ] && echo -n "\[\033[1;31m\]➜" || echo -n "\[\033[0m\]➜"`'
|
||||
local vcsbranch='`\
|
||||
if [ "${__JJ_REPO:-0}" = "1" ]; then \
|
||||
BRANCH=$(jj bookmark list -r @- 2>/dev/null | sed "s/[*:].*//" | head -1); \
|
||||
if [ -z "${BRANCH:-}" ]; then \
|
||||
BRANCH=$(jj log -r "@-" --no-graph -T "change_id.short()" 2>/dev/null); \
|
||||
fi; \
|
||||
if [ -n "${BRANCH:-}" ]; then \
|
||||
echo -n "\[\033[0;36m\](\[\033[1;31m\]${BRANCH}\[\033[0;36m\]) "; \
|
||||
fi; \
|
||||
else \
|
||||
BRANCH="$(git --no-optional-locks symbolic-ref --short HEAD 2>/dev/null || git --no-optional-locks rev-parse --short HEAD 2>/dev/null)"; \
|
||||
if [ -n "${BRANCH:-}" ]; then \
|
||||
echo -n "\[\033[0;36m\](\[\033[1;31m\]${BRANCH}\[\033[0;36m\]) "; \
|
||||
fi; \
|
||||
fi`'
|
||||
local lightblue='\[\033[1;34m\]'
|
||||
local removecolor='\[\033[0m\]'
|
||||
PS1="${userpart} ${lightblue}\w ${vcsbranch}${removecolor}\$ "
|
||||
}
|
||||
__vcs_prompt
|
||||
Reference in New Issue
Block a user