Last active
September 29, 2021 13:01
-
-
Save Artnoc1/a1ae87b002032f5131cab7a36d696984 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/system/bin/sh | |
###This script should be run via curl: | |
#sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" | |
###or via wget: | |
#sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" | |
###or via fetch: | |
#sh -c "$(fetch -o - 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 | |
###or: | |
#sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended | |
# | |
set -e | |
###Default settings | |
ZSH=${ZSH:-~/.oh-my-zsh} | |
REPO=${REPO:-ohmyzsh/ohmyzsh} | |
REMOTE=${REMOTE:-https://github.com/${REPO}.git} | |
BRANCH=${BRANCH:-master} | |
###Other options | |
CHSH=${CHSH:-yes} | |
RUNZSH=${RUNZSH:-yes} | |
KEEP_ZSHRC=${KEEP_ZSHRC:-no} | |
command_exists() { | |
command -v "$@" >/dev/null 2>&1 | |
} | |
error() { | |
echo ${RED}"Error: $@"${RESET} >&2 | |
} | |
underline() { | |
echo "$(printf '\033[4m')$@$(printf '\033[24m')" | |
} | |
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="RED" | |
GREEN="GREEN" | |
YELLOW="YELLOW" | |
BLUE="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! | |
EOF | |
cat <<-EOF | |
Before you scream Oh My Zsh! please look over the ~/.zshrc file to select plugins, themes, and options. | |
EOF | |
printf "$RESET" | |
if [ $RUNZSH = no ]; then | |
echo "${YELLOW}Run zsh to try it out.${RESET}" | |
exit | |
fi | |
exec zsh -l | |
} | |
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Если вы пришли из bash, вам, возможно, придется изменить свой `$PATH`. | |
#`export PATH=$HOME/bin:/usr/local/bin:$PATH` | |
#----------------------------------------- | |
#Путь к вашей установке `oh-my-zsh`. | |
`export ZSH=$HOME/.oh-my-zsh` | |
###### - | |
#Задайте имя темы для загрузки - если установлено значение "random", она будет загружать случайную тему каждый раз, когда загружается oh-my-zsh. В этом случае, чтобы узнать, какая именно из них была загружена, запустите: echo $RANDOM_THEME | |
[Смотреть] (https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) | |
`ZSH_THEME="robbyrussell"` | |
#----------------------------------------- | |
#Установить список тем для выбора при загрузке в случайном порядке Установка этой переменной, когда `ZSH_THEME = random` приведет к тому, что `zsh` загрузит тему из этой переменной вместо поиска в `$ZSH/themes/` Если установить пустой массив, эта переменная не будет иметь никакого эффекта. | |
#`ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы использовать завершение с учетом регистра. | |
#`CASE_SENSITIVE="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы использовать завершение без учета дефисов. Автозавершение с учетом регистра должно быть отключено. и - будут взаимозаменяемыми. | |
#`HYPHEN_INSENSITIVE="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы отключить автоматические проверки обновлений каждые две недели. | |
#`DISABLE_AUTO_UPDATE="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку для автоматического обновления без запроса. | |
#`DISABLE_UPDATE_PROMPT="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы изменить частоту автоматического обновления (в днях). | |
#`export UPDATE_ZSH_DAYS=13` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, если при вставке URL-адресов и другого текста произошла ошибка. | |
#`DISABLE_MAGIC_FUNCTIONS="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы отключить цвета в ls. | |
#`DISABLE_LS_COLORS="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы отключить автоматическую настройку заголовка терминала. | |
#`DISABLE_AUTO_TITLE="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы включить автокоррекцию команд. | |
#`ENABLE_CORRECTION="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, чтобы в ожидании завершения отображались красные точки. | |
`COMPLETION_WAITING_DOTS="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, если вы хотите отключить пометку неотслеживаемых файлов в VCS как грязные. | |
#Это значительно ускоряет проверку статуса репозитория для больших репозиториев. | |
#Раскомментируйте следующую строку, если вы хотите отключить пометку неотслеживаемых файлов в VCS как грязные. | |
#Это значительно ускоряет проверку статуса репозитория для больших репозиториев. | |
`DISABLE_UNTRACKED_FILES_DIRTY="true"` | |
#----------------------------------------- | |
#Раскомментируйте следующую строку, если вы хотите изменить отметку времени выполнения команды, отображаемую в выходных данных команды history. Вы можете установить один из трех дополнительных форматов: | |
#"mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" или установите собственный формат, используя спецификации формата функции strftime, подробности см. в 'man strftime'. | |
`HIST_STAMPS="mm/dd/yyyy"` | |
#----------------------------------------- | |
#Хотели бы вы использовать другую настраиваемую папку, кроме $ZSH/custom? | |
`ZSH_CUSTOM=/path/to/new-custom-folder` | |
#----------------------------------------- | |
#Какие плагины вы хотите загрузить? | |
#Стандартные плагины можно найти в $ ZSH / plugins / Пользовательские плагины можно добавить в $ ZSH_CUSTOM / plugins / Пример формата: plugins = (rails git textmate ruby lighthouse) Объявление | |
`plugins=(git)` | |
#----------------------------------------- | |
`source $ZSH/oh-my-zsh.sh` | |
#----------------------------------------- | |
#Конфигурация пользователя | |
#`export MANPATH="/usr/local/man:$MANPATH"` | |
#----------------------------------------- | |
#Возможно, вам придется вручную установить языковую среду | |
#`export LANG=en_US.UTF-8` | |
#----------------------------------------- | |
#Предпочитаемый редактор для локальных и удаленных сеансов | |
#if [[ -n $SSH_CONNECTION ]]; then | |
#export EDITOR='nano' | |
#else | |
#export EDITOR='mvim' | |
#fi | |
#----------------------------------------- | |
#Флаги компиляции | |
#`export ARCHFLAGS="-arch x86_64"` | |
#----------------------------------------- | |
#Установите личные псевдонимы, переопределив псевдонимы, предоставляемые библиотеками, плагинами и темами `oh-my-zsh`. Здесь можно разместить псевдонимы, хотя пользователям `oh-my-zsh` рекомендуется определять псевдонимы в папке ZSH_CUSTOM.`alias`. | |
#----------------------------------------- | |
#Примеры псевдонимов | |
`alias zshconfig="mate ~/.zshrc"` | |
`alias ohmyzsh="mate ~/.oh-my-zsh"` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment