Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
O
ohmyzsh
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
huchi
ohmyzsh
Commits
eb3bd548
Commit
eb3bd548
authored
Mar 06, 2020
by
huchi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add install script
parent
5a32f0a5
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
289 行增加
和
0 行删除
+289
-0
install.sh
+289
-0
没有找到文件。
install.sh
0 → 100644
查看文件 @
eb3bd548
#!/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 settings
ZSH
=
${
ZSH
:-
~/.oh-my-zsh
}
REPO
=
${
REPO
:-
ohmyzsh
/ohmyzsh
}
REMOTE
=
${
REMOTE
:-
http
://47.105.50.196/huchi/ohmyzsh.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
}
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
"
$@
"
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论