#!/bin/bash
#function:yum源切換(支持阿里雲、騰訊雲、華為雲、自定義源)
#author:MarkWu 2025.11.25 updated version
##########################################

# 定義阿里雲yum源切換函數
Ali() {
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum clean all
    yum makecache
}

# 定義騰訊雲yum源切換函數
Tencent() {
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.tencentyun.com/repo/centos7_base.repo
    yum clean all
    yum makecache
}

# 定義華為雲yum源切換函數
Huawei() {
    wget -q -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
    yum clean all
    yum makecache
}

# 定義自定義源切換函數
CustomRepo() {
    read -p "請輸入repo文件路徑: " repo_path
    read -p "請輸入repo URL: " repo_url
    wget -O "$repo_path" "$repo_url"
    yum clean all
    yum makecache
}

PS3="請選擇yum源: "
select i in "阿里巴巴鏡像站" "騰訊軟件源" "華為雲鏡像站" "輸入自定義源" "退出"
do
    case $i in
        "1).阿里巴巴鏡像站")
            Ali
            ;;
        "2).騰訊軟件源")
            Tencent
            ;;
        "3).華為雲鏡像站")
            Huawei
            ;;
        "4).輸入自定義源")
            CustomRepo
            ;;
        "5).退出")
            echo "系統退出"
            exit
            ;;
        *) echo "無效選擇,請重新輸入";;
    esac
done

好的,我們來逐一解釋這份腳本的每個部分,讓你徹底明白它是如何工作的。


腳本整體功能

此腳本可 CentOS 7 系統上自動切換 YUM 軟件源
用户可以通過菜單選擇:

  • 切換到阿里雲、騰訊雲、華為雲等國內鏡像源(速度快)
  • 輸入自定義的YUM源地址
  • 退出腳本

腳本結構解析

1. 腳本聲明和註釋
#!/bin/bash
#function:yum源切換(支持阿里雲、騰訊雲、華為雲、自定義源)
#author:MarkWu 2025.11.25 updated version
##########################################
  • #!/bin/bash:指定腳本使用bash解釋器執行。
  • # 開頭的行是註釋,説明腳本功能、作者和版本。

2. 定義切換源的函數

腳本定義了4個函數,分別對應不同的操作:

**(1) 阿里雲源切換函數 **Ali()
Ali() {
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum clean all
    yum makecache
}
  • curl -o [輸出文件] [URL]:從阿里雲鏡像站下載CentOS 7的repo配置文件,覆蓋系統默認的 /etc/yum.repos.d/CentOS-Base.repo
  • yum clean all:清空YUM緩存(舊的源信息)。
  • yum makecache:生成新的緩存(使用新的源地址)。
**(2) 騰訊雲源切換函數 **Tencent()
Tencent() {
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.tencentyun.com/repo/centos7_base.repo
    yum clean all
    yum makecache
}
  • 與阿里雲類似,只是使用 wget 命令下載騰訊雲的repo文件。
  • wget -O [輸出文件] [URL]:作用和 curl -o 相同,都是下載文件到指定路徑。
**(3) 華為雲源切換函數 **Huawei()
Huawei() {
    wget -q -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
    yum clean all
    yum makecache
}
  • 使用 wget -q 靜默下載(不顯示下載進度)。
  • 下載華為雲的repo配置文件。
**(4) 自定義源切換函數 **CustomRepo()
CustomRepo() {
    read -p "請輸入repo文件路徑: " repo_path
    read -p "請輸入repo URL: " repo_url
    wget -O "$repo_path" "$repo_url"
    yum clean all
    yum makecache
}
  • read -p [提示語] [變量名]:讀取用户輸入的repo文件保存路徑和源地址。
  • 下載用户指定的repo文件到自定義路徑。
  • 同樣執行清理和重建緩存操作。

3. 菜單交互部分
PS3="請選擇yum源: "
select i in "1).阿里巴巴鏡像站" "2).騰訊軟件源" "3).華為雲鏡像站" "4).輸入自定義源" "5).退出"
do
    case $i in
        "1).阿里巴巴鏡像站") Ali ;;
        "2).騰訊軟件源") Tencent ;;
        "3).華為雲鏡像站") Huawei ;;
        "4).輸入自定義源") CustomRepo ;;
        "5).退出") echo "系統退出"; exit ;;
        *) echo "無效選擇,請重新輸入" ;;
    esac
done
  • PS3:設置 select 菜單的提示語。
  • select i in [選項列表]:生成一個交互式菜單,用户輸入序號選擇對應的選項。
  • case $i in ... esac:根據用户選擇的選項,執行對應的函數。
  • 如果輸入 1,執行 Ali() 切換到阿里雲。
  • 如果輸入 4,執行 CustomRepo() 讓用户自定義源。
  • 如果輸入 5,輸出提示並退出腳本。
  • 輸入其他無效值,提示重新輸入。

關鍵説明

  1. yum** 緩存**:
  • yum clean all:刪除所有緩存的包和元數據。
  • yum makecache:將新源的包信息緩存到本地,加快後續安裝速度。
  1. 權限要求
  • 腳本需要 root權限 執行,因為要修改 /etc/yum.repos.d/ 目錄下的系統文件。
  • 運行時請用 sudo ./腳本名.sh
  1. 適用系統
  • 腳本中使用的repo文件是為 CentOS 7 設計的,不適用於CentOS 8+/9或其他Linux發行版(如Ubuntu、Debian)。