Oh-My-Zsh
2023年03月25日
一、认识
二、安装
1. 创建一个名为 install_oh-my-zsh.sh
的脚本
#!/bin/bash
set -e # 遇到错误时停止脚本执行
# 定义变量
CONFIG_FILE="$HOME/.zshrc"
OH_MY_ZSH_INSTALL_URL="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"
OH_MY_ZSH_DIR="$HOME/.oh-my-zsh"
# 检查 Oh-My-Zsh 是否已安装
if [ -d "$OH_MY_ZSH_DIR" ]; then
echo "Oh-My-Zsh 已经安装。"
else
echo "安装 Oh-My-Zsh..."
/bin/bash -c "$(curl -fsSL $OH_MY_ZSH_INSTALL_URL)"
fi
# 确保 Oh-My-Zsh 配置存在于 .zshrc 中
if ! grep -q "export ZSH=\"$OH_MY_ZSH_DIR\"" "$CONFIG_FILE"; then
echo "export ZSH=\"$OH_MY_ZSH_DIR\"" >> "$CONFIG_FILE"
echo "ZSH 环境变量已添加到 $CONFIG_FILE。"
fi
if ! grep -q "ZSH_THEME=" "$CONFIG_FILE"; then
echo 'ZSH_THEME="robbyrussell"' >> "$CONFIG_FILE"
echo "ZSH_THEME 配置已添加到 $CONFIG_FILE。"
fi
if ! grep -q "plugins=(" "$CONFIG_FILE"; then
echo 'plugins=(git)' >> "$CONFIG_FILE"
echo "插件配置已添加到 $CONFIG_FILE。"
fi
# 确保 .zshrc 文件的最后包含以下行
if ! grep -q "source \$ZSH/oh-my-zsh.sh" "$CONFIG_FILE"; then
echo "source \$ZSH/oh-my-zsh.sh" >> "$CONFIG_FILE"
echo "Oh-My-Zsh 启动脚本已添加到 $CONFIG_FILE。"
fi
# 提示重新加载配置文件
echo "要应用更改,请重新加载您的 .zshrc 文件:source $CONFIG_FILE"
echo "脚本执行完成成功!"
# 自动重新加载配置文件(可选)
source "$CONFIG_FILE"
2. 赋予脚本可执行权限
chmod +x install_oh-my-zsh.sh
3. 执行脚本,安装 Docker
./install_oh-my-zsh.sh
三、插件
3.1 oh-my-zsh 增加 git 插件
git: 可以使用各种 git
命令缩写
配置
plugins=(其他的插件 git)
3.2 oh-my-zsh 增加 zsh-autosuggestions 插件
zsh-autosuggestions, 效率神器, 输入命令时,会给出建议的命令(灰色部分)按键盘 → 补全
安装
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
配置
在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-autosuggestions)
生效
使配置生效
source ~/.zshrc
3.3 oh-my-zsh 增加 zsh-syntax-highlighting 插件
zsh-syntax-highlighting, 平常用的ls
、cd
等命令输入正确会绿色高亮显示,输入错误会显示其他的颜色。
安装
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
配置
在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-syntax-highlighting)
生效:
使配置生效
source ~/.zshrc
四、主题
4.1 安装
1. 创建一个名为 install_oh-my-zsh.sh
的脚本
#!/bin/bash
set -e # 遇到错误时停止脚本执行
# 定义变量
CONFIG_FILE="$HOME/.zshrc"
OH_MY_ZSH_INSTALL_URL="https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh"
OH_MY_ZSH_DIR="$HOME/.oh-my-zsh"
THEME_REPO="https://github.com/romkatv/powerlevel10k.git"
THEME_DIR="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
# 检查并安装 Oh-My-Zsh
if [ -d "$OH_MY_ZSH_DIR" ]; then
echo "Oh-My-Zsh 已经安装。"
else
echo "安装 Oh-My-Zsh..."
/bin/bash -c "$(curl -fsSL $OH_MY_ZSH_INSTALL_URL)"
fi
# 下载主题
echo "下载主题 powerlevel10k..."
if [ -d "$THEME_DIR" ]; then
echo "Powerlevel10k 主题已经下载。"
else
git clone --depth=1 "$THEME_REPO" "$THEME_DIR"
echo "Powerlevel10k 主题已下载。"
fi
# 确保 .zshrc 配置存在
echo "配置 $CONFIG_FILE..."
# 检查并添加 ZSH 环境变量
if ! grep -q "export ZSH=\"$OH_MY_ZSH_DIR\"" "$CONFIG_FILE"; then
echo "export ZSH=\"$OH_MY_ZSH_DIR\"" >> "$CONFIG_FILE"
echo "ZSH 环境变量已添加到 $CONFIG_FILE。"
fi
# 检查并添加主题配置
if ! grep -q "ZSH_THEME=" "$CONFIG_FILE"; then
echo 'ZSH_THEME="powerlevel10k/powerlevel10k"' >> "$CONFIG_FILE"
echo "ZSH_THEME 配置已添加到 $CONFIG_FILE。"
fi
# 检查并添加插件配置
if ! grep -q "plugins=(" "$CONFIG_FILE"; then
echo 'plugins=(git)' >> "$CONFIG_FILE"
echo "插件配置已添加到 $CONFIG_FILE。"
fi
# 确保 .zshrc 文件的最后包含 oh-my-zsh 启动脚本
if ! grep -q "source \$ZSH/oh-my-zsh.sh" "$CONFIG_FILE"; then
echo "source \$ZSH/oh-my-zsh.sh" >> "$CONFIG_FILE"
echo "Oh-My-Zsh 启动脚本已添加到 $CONFIG_FILE。"
fi
# 提示重新加载配置文件
echo "要应用更改,请重新加载您的 .zshrc 文件:source $CONFIG_FILE"
echo "脚本执行完成成功!"
# 自动重新加载配置文件(可选)
source "$CONFIG_FILE"
2. 赋予脚本可执行权限
chmod +x install_oh-my-zsh.sh
3. 执行脚本,安装 Docker
./install_oh-my-zsh.sh
4.2 主题样式
function getIPV4() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo 'No IP')
echo "$ip"
}
function prompt_my_ip() {
local ip
ip=$(getIPV4)
[[ "$ip" != "No IP" ]] && echo -n "%{$fg[208]%}$ip%{$reset_color%}"
}
POWERLEVEL9K_CUSTOM_MY_IP="prompt_my_ip"
COLOR=(
004
006
007
)
COLOR_ARRAY=(
004 067 059
006 073 109
007 249 240
)
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os-icon dir vcs newline prompt_char)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time custom_my_ip)
PoOWERLEVELarK_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=40
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"
POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_TIME_FORMAT="%D{%T}"
iPOWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_ROOT_ICON=$'\uF198'
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"
function prompt_user() {
p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {
p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}
DISABLE_AUTO_TITLE=true
precmd(){
echo -en "\033]0; `basename $PWD` \007"
}
4.3 主题字体
-
下载字体: 字体网址为 https://www.nerdfonts.com/
Preview -
选择字体: 个人推荐使用
DejaVuSansM Nerd Font
字体Preview -
安装字体
-
配置 ZSH 字体:
Preview -
配置 VsCode 字体: 用户配置
settings.json
中添加如下配置项"terminal.integrated.fontFamily": "DejaVuSansM Nerd Font",
五、完整配置
eval $(/opt/homebrew/bin/brew shellenv)
export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
function getIPV4() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo 'No IP')
echo "$ip"
}
function prompt_my_ip() {
local ip
ip=$(getIPV4)
[[ "$ip" != "No IP" ]] && echo -n "%{$fg[208]%}$ip%{$reset_color%}"
}
POWERLEVEL9K_CUSTOM_MY_IP="prompt_my_ip"
COLOR=(
004
006
007
)
COLOR_ARRAY=(
004 067 059
006 073 109
007 249 240
)
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os-icon dir vcs newline prompt_char)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time custom_my_ip)
PoOWERLEVELarK_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=40
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"
POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_TIME_FORMAT="%D{%T}"
iPOWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_ROOT_ICON=$'\uF198'
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"
function prompt_user() {
p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {
p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}
DISABLE_AUTO_TITLE=true
precmd(){
echo -en "\033]0; `basename $PWD` \007"
}
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
PATH=$PATH:/usr/local/mysql/bin
alias cdBlog="cd ~/bolawen/blog-docusaurus-webpack"
alias cdResource="cd ~/bolawen/resource/"
alias cdPractice="cd ~/bolawen/practice/"
alias cdScript="cd ~/bolawen/scripts"