九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Manjaro記錄

    文章不完整,繼續(xù)記錄。一來(lái)方便后人,二來(lái)方便自己以后再用~

screenfetch

如果出現(xiàn)下面的提示, 則需要更新一下 pacman, 然后再安裝軟件包.

    錯(cuò)誤:無(wú)法從 mirrors.163.com : The requested URL returned error: 404 獲取文件 'jre7-openjdk-headless-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirror.bjtu.edu.cn : The requested URL returned error: 404 獲取文件 'jre7-openjdk-headless-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirror6.bjtu.edu.cn : Failed to connect to 2001:da8:205::58: 網(wǎng)絡(luò)不可達(dá) 獲取文件 'jre7-openjdk-headless-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirrors.ustc.edu.cn : Given file does not exist 獲取文件 'jre7-openjdk-headless-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirrors.ustc.edu.cn : The requested URL returned error: 404 獲取文件 'jre7-openjdk-headless-7.b147_2.1-3-x86_64.pkg.tar.xz'警告:無(wú)法從 extra 獲取某些文件錯(cuò)誤:無(wú)法從 mirrors.163.com : The requested URL returned error: 404 獲取文件 'jre7-openjdk-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirror.bjtu.edu.cn : The requested URL returned error: 404 獲取文件 'jre7-openjdk-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirror6.bjtu.edu.cn : Failed to connect to 2001:da8:205::58: 網(wǎng)絡(luò)不可達(dá) 獲取文件 'jre7-openjdk-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirrors.ustc.edu.cn : Given file does not exist 獲取文件 'jre7-openjdk-7.b147_2.1-3-x86_64.pkg.tar.xz'錯(cuò)誤:無(wú)法從 mirrors.ustc.edu.cn : The requested URL returned error: 404 獲取文件 'jre7-openjdk-7.b147_2.1-3-x86_64.pkg.tar.xz'警告:無(wú)法從 extra 獲取某些文件錯(cuò)誤:無(wú)法提交處理 (下載函數(shù)庫(kù)出錯(cuò))
  1. 發(fā)生錯(cuò)誤,沒(méi)有軟件包被更新。

原因在于本地?cái)?shù)據(jù)庫(kù) core.db, extra.db, community.db 中的軟件包信息已經(jīng)與服務(wù)器上的不一致, 主要是軟件包的版本不一致導(dǎo)致的. 一般不是服務(wù)器連接不上的原因.

執(zhí)行下面的命令即可.

    sudo pacman -Sy

Typora

Markdown編輯器:Typora:

yaourt typora

強(qiáng)大的全平臺(tái)Git客戶(hù)端GitKraken:

yaourt GitKraken

圖像編輯器Gimp:

sudo pacman -S gimp

強(qiáng)大的PDF閱讀器Foxit: 

yaourt foxit

我這個(gè)安裝失敗,3個(gè)源全不能用

網(wǎng)易云音樂(lè)非官方客戶(hù)端electron-netease-cloud-music: 

sudo pacman -S electron-netease-cloud-music

網(wǎng)易云命令行播放器(很贊)NetEase-MusicBox:

yaourt musicbox

,使用方法點(diǎn)擊查看

https://github.com/darknessomi/musicbox/blob/master/README.md#%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E9%94%AE

功能特性

  1. 320kbps的高品質(zhì)音樂(lè)

  2. 歌曲,藝術(shù)家,專(zhuān)輯檢索

  3. 網(wǎng)易22個(gè)歌曲排行榜

  4. 網(wǎng)易新碟推薦

  5. 網(wǎng)易精選歌單

  6. 網(wǎng)易主播電臺(tái)

  7. 私人歌單,每日推薦

  8. 隨心打碟

  9. 本地收藏,隨時(shí)加

  10. 播放進(jìn)度及播放模式顯示

  11. 現(xiàn)在播放及桌面歌詞顯示

  12. 歌曲評(píng)論顯示

  13. 一鍵進(jìn)入歌曲專(zhuān)輯

  14. 定時(shí)退出

  15. Vimer式快捷鍵讓操作絲般順滑

  16. 可使用數(shù)字快捷鍵

  17. 可使用自定義全局快捷鍵

鍵盤(pán)快捷鍵

KeyEffect
jDown下移
kUp上移
hBack后退
lForword前進(jìn)
uPrev page上一頁(yè)
dNext page下一頁(yè)
fSearch快速搜索
[Prev song上一曲
]Next song下一曲
=Volume +音量增加
-Volume -音量減少
SpacePlay/Pause播放/暫停
?Shuffle手氣不錯(cuò)
mMenu主菜單
pPresent/History當(dāng)前/歷史播放列表
iMusic Info當(dāng)前音樂(lè)信息
?+pPlaying Mode播放模式切換
aAdd添加曲目到打碟
?+aEnter album進(jìn)入專(zhuān)輯
gTo the first跳至首項(xiàng)
?+gTo the end跳至尾項(xiàng)
zDJ list打碟列表
sStar添加到收藏
cCollection收藏列表
rRemove刪除當(dāng)前條目
?+jMove Down向下移動(dòng)當(dāng)前項(xiàng)目
?+kMove Up向上移動(dòng)當(dāng)前項(xiàng)目
?+cCache緩存歌曲到本地
,Like喜愛(ài)
.Trash FM刪除 FM
/Next FM下一FM
qQuit退出
tTiming Exit定時(shí)退出
wQuit&Clear退出并清除用戶(hù)信息

OneDrive Linux

onedrive Linux客戶(hù)端:

https://github.com/skilion/onedrive

安裝:

sudo pacman -S curl sqlite dlang # 安裝依賴(lài)git clone https://github.com/skilion/onedrive.gitcd onedrivemakesudo make install

**注意:**首次運(yùn)行時(shí),必須在命令行中運(yùn)行并進(jìn)行授權(quán),運(yùn)行之前進(jìn)行配置,否則會(huì)自動(dòng)下載onedrive中所有文件。

配置:

mkdir -p ~/.config/onedrivecp ./config ~/.config/onedrive/confignano ~/.config/onedrive/config

默認(rèn)可以不改變,對(duì)于需要同步的文件夾,推薦使用sync_list,更加簡(jiǎn)單明了。

在~/.config/onedrive新建sync_list文件,文件的每一行代表sync_dir的相對(duì)路徑。在所有操作期間,將跳過(guò)與文件的任何行不匹配的所有文件和目錄。如:

BackupDocuments/latest_report.docxWork/ProjectXnotes.txt

當(dāng)添加新文件或改動(dòng)文件時(shí),需手動(dòng)上傳同步:onedrive --resync --verbose

當(dāng)然也可以自動(dòng)同步:

systemctl --user enable onedrivesystemctl --user start onedrive

強(qiáng)大的命令行下載工具aria2: 

sudo pacman -S aria2
https://github.com/aria2/aria2

強(qiáng)大的Web內(nèi)容(視頻,音頻,圖片)下載工具you-get: 

sudo pacman -S you-get
https://github.com/soimort/you-get

目錄跳轉(zhuǎn)神奇autojump:

sudo pacman -S autojump
https://github.com/wting/autojump

安裝完成后需進(jìn)行簡(jiǎn)單配置:

在~/.zshrc中添加:

source /usr/share/autojump/autojump.zsh

如果默認(rèn)Shell是bash的話,在~/.bashrc中添加:source /usr/share/autojump/autojump.bash

模糊搜素神奇fzf:

sudo pacman -S fzf

,具體配置查看文檔,我的配置是添加alias:alias fzf="fzf --height 40%",可在oh-my-zsh配置文件中添加fzf插件。

個(gè)人認(rèn)為通過(guò)vim **再按Tab鍵更好地利用了fzf命令,類(lèi)似的還有kill **等。

https://github.com/junegunn/fzf

一個(gè)速度極快的類(lèi)似ack的代碼搜索工具ag: 

sudo pacman -S the_silver_searcher

自動(dòng)糾正上一個(gè)控制臺(tái)命令thefuck: 

sudo pacman -S thefuckhttps://github.com/nvbn/thefuck

強(qiáng)大的終端復(fù)用工具tmux: 

sudo pacman -S tmuxhttps://github.com/tmux/tmux

字符模式下交互查看git項(xiàng)目tig: 

sudo pacman -S tig
https://github.com/jonas/ti

終端美化

sudo pacman -S zsh

配置zsh

chsh -s /bin/zsh

如果想換回bash,運(yùn)行

chsh -s /bin/bash

安裝oh-my-zsh

運(yùn)行命令(需要在zsh下運(yùn)行)

如果沒(méi)安裝git需要運(yùn)行以下命令,否則跳過(guò)

肯定有g(shù)it

sudo pacman -S git

不要帶sudo,否則會(huì)導(dǎo)致用戶(hù)界面無(wú)法達(dá)到預(yù)期效果。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

如果提示timed out可以復(fù)制以下腳本

別想了,整??隙╰imeout

#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN=""#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@"#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@"#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi
#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@" # Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@"
# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else#!/bin/sh## This script should be run via curl:# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# or wget:# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"## As an alternative, you can first download the install script and run it afterwards:# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh# sh install.sh## You can tweak the install behavior by setting variables when running the script. For# example, to change the path to the Oh My Zsh repository:# ZSH=~/.zsh sh install.sh## Respects the following environment variables:# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)# BRANCH - branch to check out immediately after install (default: master)## Other options:# CHSH - 'no' means the installer will not change the default shell (default: yes)# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)# KEEP_ZSHRC - 'yes' means the installer will not replace an existing .zshrc (default: no)## You can also pass some arguments to the install script to set some these options:# --skip-chsh: has the same behavior as setting CHSH to 'no'# --unattended: sets both CHSH and RUNZSH to 'no'# --keep-zshrc: sets KEEP_ZSHRC to 'yes'# For example:# sh install.sh --unattended#set -e

# Default settingsZSH=${ZSH:-~/.oh-my-zsh}REPO=${REPO:-ohmyzsh/ohmyzsh}REMOTE=${REMOTE:-https://github.com/${REPO}.git}BRANCH=${BRANCH:-master}

# Other optionsCHSH=${CHSH:-yes}RUNZSH=${RUNZSH:-yes}KEEP_ZSHRC=${KEEP_ZSHRC:-no}



command_exists() { command -v "$@" >/dev/null 2>&1}

error() { echo ${RED}"Error: $@"${RESET} >&2}

setup_color() { # Only use colors if connected to a terminal if [ -t 1 ]; then RED=$(printf '\033[31m') GREEN=$(printf '\033[32m') YELLOW=$(printf '\033[33m') BLUE=$(printf '\033[34m') BOLD=$(printf '\033[1m') RESET=$(printf '\033[m') else RED="" GREEN="" YELLOW="" BLUE="" BOLD="" RESET="" fi}

setup_ohmyzsh() { # Prevent the cloned repository from having insecure permissions. Failing to do # so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group writability). Note # that this will be ignored under Cygwin by default, as Windows ACLs take # precedence over umasks except for filesystems mounted with option "noacl". umask g-w,o-w

echo "${BLUE}Cloning Oh My Zsh...${RESET}"

command_exists git || { error "git is not installed" exit 1 }

if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then error "Windows/MSYS Git is not supported on Cygwin" error "Make sure the Cygwin git package is installed and is first on the \$PATH" exit 1 fi

git clone -c core.eol=lf -c core.autocrlf=false \ -c fsck.zeroPaddedFilemode=ignore \ -c fetch.fsck.zeroPaddedFilemode=ignore \ -c receive.fsck.zeroPaddedFilemode=ignore \ --depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { error "git clone of oh-my-zsh repo failed" exit 1 }

echo}

setup_zshrc() { # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones # with datestamp of installation that moved them aside, so we never actually # destroy a user's original zshrc echo "${BLUE}Looking for an existing zsh config...${RESET}"

# Must use this exact name so uninstall.sh can find it OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then # Skip this if the user doesn't want to replace an existing .zshrc if [ $KEEP_ZSHRC = yes ]; then echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Keeping...${RESET}" return fi if [ -e "$OLD_ZSHRC" ]; then OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" if [ -e "$OLD_OLD_ZSHRC" ]; then error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" error "re-run the installer again in a couple of seconds" exit 1 fi mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"

echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \ "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}" fi echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}" mv ~/.zshrc "$OLD_ZSHRC" fi

echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"

sed "/^export ZSH=/ c\\export ZSH=\"$ZSH\"" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp mv -f ~/.zshrc-omztemp ~/.zshrc

echo}

setup_shell() { # Skip setup if the user wants or stdin is closed (not running interactively). if [ $CHSH = no ]; then return fi

# If this user's login shell is already "zsh", do not attempt to switch. if [ "$(basename "$SHELL")" = "zsh" ]; then return fi

# If this platform doesn't provide a "chsh" command, bail out. if ! command_exists chsh; then cat <<-EOF I can't change your shell automatically because this system does not have chsh. ${BLUE}Please manually change your default shell to zsh${RESET} EOF return fi

echo "${BLUE}Time to change your default shell to zsh:${RESET}"

# Prompt for user choice on changing the default login shell printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} " read opt case $opt in y*|Y*|"") echo "Changing the shell..." ;; n*|N*) echo "Shell change skipped."; return ;; *) echo "Invalid choice. Shell change skipped."; return ;; esac

# Check if we're running on Termux case "$PREFIX" in *com.termux*) termux=true; zsh=zsh ;; *) termux=false ;; esac

if [ "$termux" != true ]; then # Test for the right location of the "shells" file if [ -f /etc/shells ]; then shells_file=/etc/shells elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS shells_file=/usr/share/defaults/etc/shells else error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}

main "$@" error "could not find /etc/shells file. Change your default shell manually." return fi

# Get the path to the right zsh binary # 1. Use the most preceding one based on $PATH, then check that it's in the shells file # 2. If that fails, get a zsh path from the shells file, then check it actually exists if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then error "no zsh binary found or not present in '$shells_file'" error "change your default shell manually." return fi fi fi

# We're going to change the default shell, so back up the current one if [ -n "$SHELL" ]; then echo $SHELL > ~/.shell.pre-oh-my-zsh else grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh fi

# Actually change the default shell to zsh if ! chsh -s "$zsh"; then error "chsh command unsuccessful. Change your default shell manually." else export SHELL="$zsh" echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" fi

echo}

main() { # Run as unattended if stdin is closed if [ ! -t 0 ]; then RUNZSH=no CHSH=no fi

# Parse arguments while [ $# -gt 0 ]; do case $1 in --unattended) RUNZSH=no; CHSH=no ;; --skip-chsh) CHSH=no ;; --keep-zshrc) KEEP_ZSHRC=yes ;; esac shift done

setup_color

if ! command_exists zsh; then echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first." exit 1 fi

if [ -d "$ZSH" ]; then cat <<-EOF ${YELLOW}You already have Oh My Zsh installed.${RESET} You'll need to remove '$ZSH' if you want to reinstall. EOF exit 1 fi

setup_ohmyzsh setup_zshrc setup_shell

printf "$GREEN" cat <<-'EOF' __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed! Please look over the ~/.zshrc file to select plugins, themes, and options. p.s. Follow us on https://twitter.com/ohmyzsh p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh EOF printf "$RESET"

if [ $RUNZSH = no ]; then echo "${YELLOW}Run zsh to try it out.${RESET}" exit fi

exec zsh -l}main "$@"

然后執(zhí)行

sh install.sh

我沒(méi)有寫(xiě)完啊,但是瀏覽器一卡一卡的。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
oh my zsh安裝過(guò)程、還原和安裝失敗的問(wèn)題解決
OH MY ZSH??!
Linux 超級(jí)漂亮的 Shell
Linux下查看和修改shell
[醉了]解決重啟mac但是bash
linux下配置ZSH
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服