安裝homebrew

終端運行:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

腳本內(nèi)容

#HomeBrew自動安裝腳本
#cunkai.wang@foxmail.com
#路徑表.
HOMEBREW_PREFIX="/usr/local"
HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew"
HOMEBREW_CACHE="${HOME}/Library/Caches/Homebrew"

STAT="stat -f"
CHOWN="/usr/sbin/chown"
CHGRP="/usr/bin/chgrp"
GROUP="admin"

#獲取前面兩個.的數(shù)據(jù)
major_minor() {
  echo "${1%%.*}.$(x="${1#*.}"; echo "${x%%.*}")"
}

#獲取系統(tǒng)版本
macos_version="$(major_minor "$(/usr/bin/sw_vers -productVersion)")"
#獲取系統(tǒng)時間
TIME=$(date "+%Y-%m-%d %H:%M:%S")

JudgeSuccess()
{
    if [ $? -ne 0 ];then
        echo '\033[1;31m此步驟失敗 '$1'\033[0m'
        if [[ "$2" == 'out' ]]; then
          exit 0
        fi
    else
        echo "\033[1;32m此步驟成功\033[0m"

    fi
}
# 判斷是否有系統(tǒng)權(quán)限
have_sudo_access() {
  if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then
    /usr/bin/sudo -l mkdir &>/dev/null
    HAVE_SUDO_ACCESS="$?"
  fi

  if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then
    echo "\033[1;31m開機密碼輸入錯誤,獲取權(quán)限失敗!\033[0m"
  fi

  return "$HAVE_SUDO_ACCESS"
}


abort() {
  printf "%s\n" "$1"
  exit 1
}

shell_join() {
  local arg
  printf "%s" "$1"
  shift
  for arg in "$@"; do
    printf " "
    printf "%s" "${arg// /\ }"
  done
}

execute() {
  if ! "$@"; then
    abort "$(printf "\033[1;31m此命令運行失敗(再次運行腳本或者手動運行此命令測試權(quán)限):sudo %s\033[0m" "$(shell_join "$@")")"
  fi
}

# 管理員運行
execute_sudo() 
{
  # local -a args=("$@")
  # if [[ -n "${SUDO_ASKPASS-}" ]]; then
  #   args=("-A" "${args[@]}")
  # fi
  if have_sudo_access; then
    execute "/usr/bin/sudo" "$@"
  else
    execute "sudo" "$@"
  fi
}
#添加文件夾權(quán)限
AddPermission()
{
  execute_sudo "/bin/chmod" "-R" "a+rwx" "$1"
  execute_sudo "$CHOWN" "$USER" "$1"
  execute_sudo "$CHGRP" "$GROUP" "$1"
}
#創(chuàng)建文件夾
CreateFolder()
{
    echo '-> 創(chuàng)建文件夾' $1
    execute_sudo "/bin/mkdir" "-p" "$1"
    JudgeSuccess
    AddPermission $1
}

RmAndCopy()
{
  if [[ -d $1 ]]; then
    echo '   ---備份要刪除的文件夾到系統(tǒng)桌面....'
    if ! [[ -d /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1 ]]; then
      mkdir -p /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1
    fi
    cp -rf $1 /Users/$(whoami)/Desktop/Old_Homebrew/$TIME/$1
    echo "   ---$1 備份完成"
  fi
  sudo rm -rf $1
}

RmCreate()
{
    RmAndCopy $1
    CreateFolder $1
}

#git提交
git_commit(){
    git add .
    git commit -m "your del"
}

#version_gt 判斷$1是否大于$2
version_gt() {
  [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -gt "${2#*.}" ]]
}
#version_ge 判斷$1是否大于等于$2
version_ge() {
  [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -ge "${2#*.}" ]]
}
#version_lt 判斷$1是否小于$2
version_lt() {
  [[ "${1%.*}" -lt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -lt "${2#*.}" ]]
}

#一些警告判斷
warning_if(){
  git_https_proxy=$(git config --global https.proxy)
  git_http_proxy=$(git config --global http.proxy)
  if [[ -z "$git_https_proxy"  &&  -z "$git_http_proxy" ]]; then
  echo "未發(fā)現(xiàn)Git代理(屬于正常狀態(tài))"
  else
  echo "\033[1;33m
      提示:發(fā)現(xiàn)你電腦設(shè)置了Git代理,如果Git報錯,請運行下面兩句話:

              git config --global --unset https.proxy

              git config --global --unset http.proxy\033[0m
  "
  fi
}

echo '
              \033[1;32m開始執(zhí)行Brew自動安裝程序\033[0m
             \033[1;36m[cunkai.wang@foxmail.com]\033[0m
           ['$TIME']['$macos_version']
       \033[1;36mhttps://zhuanlan.zhihu.com/p/111014448\033[0m
'
#選擇一個下載源
echo '\033[1;32m
請選擇一個下載鏡像,例如中科大,輸入1回車。
源有時候不穩(wěn)定,如果git克隆報錯重新運行腳本選擇源。cask非必須,有部分人需要。
1、中科大下載源 2、清華大學(xué)下載源 3、北京外國語大學(xué)下載源 4、騰訊下載源(不顯示下載進度) 5、阿里巴巴下載源(缺少cask源)\033[0m'
read "MY_DOWN_NUM?請輸入序號: "
case $MY_DOWN_NUM in
"2")
    echo "
    你選擇了清華大學(xué)下載源"
    USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
    #HomeBrew基礎(chǔ)框架
    USER_BREW_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
    #HomeBrew Core
    USER_CORE_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
    #HomeBrew Cask
    USER_CASK_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
    USER_CASK_FONTS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
    USER_CASK_DRIVERS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
;;
"3")
    echo "
    北京外國語大學(xué)下載源"
    USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
    #HomeBrew基礎(chǔ)框架
    USER_BREW_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/brew.git
    #HomeBrew Core
    USER_CORE_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-core.git
    #HomeBrew Cask
    USER_CASK_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask.git
    USER_CASK_FONTS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-fonts.git
    USER_CASK_DRIVERS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-drivers.git
;;
"4")
    echo "
    你選擇了騰訊下載源"
    USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
    #HomeBrew基礎(chǔ)框架
    USER_BREW_GIT=https://mirrors.cloud.tencent.com/homebrew/brew.git 
    #HomeBrew Core
    USER_CORE_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-core.git
    #HomeBrew Cask
    USER_CASK_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-cask.git
;;
"5")
    echo "
    你選擇了阿里巴巴下載源(阿里缺少cask源)"
    USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
    #HomeBrew基礎(chǔ)框架
    USER_BREW_GIT=https://mirrors.aliyun.com/homebrew/brew.git 
    #HomeBrew Core
    USER_CORE_GIT=https://mirrors.aliyun.com/homebrew/homebrew-core.git
    #HomeBrew Cask
    USER_CASK_GIT=https://mirrors.aliyun.com/homebrew/homebrew-cask.git
;;
*)
  echo "
  你選擇了中國科學(xué)技術(shù)大學(xué)下載源"
  #HomeBrew 下載源 install
  USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
  #HomeBrew基礎(chǔ)框架
  USER_BREW_GIT=https://mirrors.ustc.edu.cn/brew.git
  #HomeBrew Core
  USER_CORE_GIT=https://mirrors.ustc.edu.cn/homebrew-core.git
  #HomeBrew Cask
  USER_CASK_GIT=https://mirrors.ustc.edu.cn/homebrew-cask.git
;;
esac
echo '\033[1;32m'
read "MY_Del_Old??。?!此腳本將要刪除之前的brew(包括它下載的軟件),請自行備份。
->是否現(xiàn)在開始執(zhí)行腳本(N/Y)"
echo '\033[0m'
case $MY_Del_Old in
"y")
echo "--> 腳本開始執(zhí)行"
;;
"Y")
echo "--> 腳本開始執(zhí)行"
;;
*)
echo "你輸入了 $MY_Del_Old ,自行備份老版brew和它下載的軟件, 如果繼續(xù)運行腳本應(yīng)該輸入Y或者y
"
open /usr/local/
exit 0
;;
esac
echo '==> 通過命令刪除之前的brew、創(chuàng)建一個新的Homebrew文件夾
(設(shè)置開機密碼:在左上角蘋果圖標(biāo)->系統(tǒng)偏好設(shè)置->"用戶與群組"->更改密碼)
(如果提示This incident will be reported. 在"用戶與群組"中查看是否管理員)
\033[1;36m請輸入開機密碼,輸入過程不顯示,輸入完后回車\033[0m'
sudo echo '開始執(zhí)行'
# 讓環(huán)境暫時純粹,重啟終端后恢復(fù)
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
RmCreate ${HOMEBREW_REPOSITORY}
RmAndCopy /Users/$(whoami)/Library/Caches/Homebrew/
RmAndCopy /Users/$(whoami)/Library/Logs/Homebrew/
RmCreate ${HOMEBREW_PREFIX}/Caskroom
RmCreate ${HOMEBREW_PREFIX}/Cellar
RmCreate ${HOMEBREW_PREFIX}/var/homebrew
directories=(bin etc include lib sbin share var opt
             share/zsh share/zsh/site-functions
             var/homebrew var/homebrew/linked
             Cellar Caskroom Homebrew Frameworks)
for dir in "${directories[@]}"; do
  if ! [[ -d "${HOMEBREW_PREFIX}/${dir}" ]]; then
    CreateFolder "${HOMEBREW_PREFIX}/${dir}"
  fi
  AddPermission ${HOMEBREW_PREFIX}/${dir}
done

git --version
if [ $? -ne 0 ];then
  sudo rm -rf "/Library/Developer/CommandLineTools/"
  echo '\033[1;36m安裝Git\033[0m后再運行此腳本,\033[1;31m在系統(tǒng)彈窗中點擊“安裝”按鈕
如果沒有彈窗的老系統(tǒng),需要自己下載安裝:https://sourceforge.net/projects/git-osx-installer/ \033[0m'
  xcode-select --install
  exit 0
fi

echo '
\033[1;36m下載速度覺得慢可以ctrl+c或control+c重新運行腳本選擇下載源\033[0m
==> 克隆Homebrew基本文件(32M+)
'
warning_if
sudo git clone $USER_BREW_GIT ${HOMEBREW_REPOSITORY}
JudgeSuccess 嘗試再次運行自動腳本選擇其他下載源或者切換網(wǎng)絡(luò) out
echo '==> 創(chuàng)建brew的替身'
find ${HOMEBREW_PREFIX}/bin -name brew -exec sudo rm -f {} \;
sudo ln -s ${HOMEBREW_PREFIX}/Homebrew/bin/brew ${HOMEBREW_PREFIX}/bin/brew
JudgeSuccess
echo '==> 克隆Homebrew Core(224M+) 
\033[1;36m此處如果顯示Password表示需要再次輸入開機密碼,輸入完后回車\033[0m'
sudo mkdir -p ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-core
sudo git clone $USER_CORE_GIT ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-core/
JudgeSuccess 嘗試再次運行自動腳本選擇其他下載源或者切換網(wǎng)絡(luò) out
echo '==> 克隆Homebrew Cask(248M+) 類似AppStore 
\033[1;36m此處如果顯示Password表示需要再次輸入開機密碼,輸入完后回車\033[0m'
if [[ "$MY_DOWN_NUM" -eq "5" ]];then
  echo '\033[1;33m阿里源沒有Cask 跳過\033[0m'
else
  sudo mkdir -p ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask
  sudo git clone $USER_CASK_GIT ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask/
  if [ $? -ne 0 ];then
      sudo rm -rf ${HOMEBREW_PREFIX}/Homebrew/Library/Taps/homebrew/homebrew-cask
      echo '\033[1;31m嘗試切換下載源或者切換網(wǎng)絡(luò),不過Cask組件非必須模塊??梢院雎診033[0m'
  else
      echo "\033[1;32m此步驟成功\033[0m"

  fi
fi
echo '==> 配置國內(nèi)鏡像源HOMEBREW BOTTLE'
if [[ -f ~/.zshrc ]]; then
  AddPermission ~/.zshrc
fi
echo "
# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
export PATH=\"/usr/local/bin:\$PATH\"
export PATH=\"/usr/local/sbin:\$PATH\"
# HomeBrew END
" >> ~/.zshrc
if [[ -f ~/.bash_profile ]]; then
  AddPermission ~/.bash_profile
fi
echo "
# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
export PATH=\"/usr/local/bin:\$PATH\"
export PATH=\"/usr/local/sbin:\$PATH\"
# HomeBrew END
" >> ~/.bash_profile
JudgeSuccess
source ~/.zshrc
source ~/.bash_profile
echo '
==> 安裝完成,brew版本
'
#判斷系統(tǒng)版本
if version_gt "$macos_version" "10.14"; then
    echo "$macos_version"
else
    echo '\033[1;31m檢測到你不是最新系統(tǒng),會有一些報錯,請稍等Ruby下載安裝;\033[0m
    '
fi

AddPermission ${HOMEBREW_REPOSITORY}
#先暫時設(shè)置到清華大學(xué)源,中科大沒有Ruby下載鏡像
HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
echo 'brew -v
'
brew -v
if [ $? -ne 0 ];then
    echo '
    \033[1;31m失敗 查看下面文章第二部分的常見錯誤
    https://zhuanlan.zhihu.com/p/111014448
    如果沒有解決,把運行腳本過程截圖發(fā)到 cunkai.wang@foxmail.com --end
    \033[0m'
    exit 0
else
    echo "\033[1;32mBrew前期配置成功\033[0m"
fi
echo '
==> brew update
'
HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN}
brew update
if [ $? -ne 0 ];then
    echo '
    \033[1;31m失敗 去下面文章看一下第二部分的常見錯誤解決辦法
    https://zhuanlan.zhihu.com/p/111014448
    如果沒有解決,把運行腳本過程截圖發(fā)到 cunkai.wang@foxmail.com \033[0m
    '
else
    echo "
        \033[1;32m上一句如果提示Already up-to-date表示成功\033[0m
            \033[1;32mBrew自動安裝程序運行完成\033[0m
              \033[1;32m國內(nèi)地址已經(jīng)配置完成\033[0m

                初步介紹幾個brew命令

        本地軟件庫列表:brew ls
        查找軟件:brew search google(其中g(shù)oogle替換為要查找的軟件關(guān)鍵字)
        查看brew版本:brew -v  更新brew版本:brew update
\033[1;32m
現(xiàn)在可以輸入命令open ~/.zshrc -e 或者 open ~/.bash_profile -e 整理一下重復(fù)的語句(運行 echo \$SHELL 可以查看應(yīng)該打開那一個文件修改)

        https://zhuanlan.zhihu.com/p/111014448  歡迎來給點個贊\033[0m
    "
fi
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容