终端的配置可以考虑直接使用oh-my-zsh,方便且美观,还有很多主题可以选择。但安装完后,打开终端,发现用户名@域名这个部分特别长,很影响终端使用,那如何处理呢?其他网站上有很多教程,但针对的都不是oh-my-zsh的,经过一番摸索之后我终于找到了解决办法,发出来给大家看看,欢迎交流学习!
1、安装的流程可以参考:http://www.jianshu.com/p/7de00c73a2bb 这个貌似是mac环境的,但配置流程和指令和linux通用,我们只要绕过所有iterm2的操作就好,我用的主题是agnoster
2、网上对这个的处理大多是打开bashrc然后修改PS1或者重新定义修改PS1,但oh_my_zsh的shell是zsh,明显不能在.bashrc中改。
不信可以在终端输入
echo $PS1
或者
echo $PROMPT
可以看到其定义为
%{%f%b%k%}$(build_prompt)
这和bashrc里PS1的定义是不同的,根本无从下手。于是又有人说那就在.zshrc中改咯,我试过,发现改了以后终端的显示会不正常,比如linux的指令都有返回值,一般为0,其他表示运行错误之类。oh_my_zsh是可以用符号提醒用户的上一个指令是否执行成功的,如果在.zshrc重新定义PS1,这个功能将会失效。所以只能用特别的方式啦。
3、解决办法:按照1中链接的安装方式,oh_my_zsh的主题和设置会被复制到主目录下,只要在终端输入
cd ~/.oh-my-zsh/themes
然后输入
echo $ZSH_THEME
查看自己主题,我的是agnoster,然后输入
vi agnoster.zsh-theme
可以看到最下面对build_prompt的定义为
## Main prompt
build_prompt() {
RETVAL=$?
prompt_status
prompt_virtualenv
prompt_context
prompt_dir
prompt_git
prompt_hg
prompt_end
}
build_prompt的定义像个结构体(实际是什么我不太懂),但agnoster.zsh-theme中对build_prompt里的每个成员都有定义,从prompt_context的定义
# Context: user@hostname (who am I and where am I)
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER@%m"
fi
}
可以看出这个就是定义用户名和域名的地方,只要把build_prompt的定义修改为如下:
## Main prompt
build_prompt() {
RETVAL=$?
prompt_status
prompt_virtualenv
#prompt_context
prompt_dir
prompt_git
prompt_hg
prompt_end
}
即把prompt_context用#注释掉即可,以后需要修改其他东西也可到这里修改。
————————————————————————————————————————————
这里做个更新(2017-08-01):
1、由于oh_my_zsh
时常会有版本更新,为了避免我们修改的跟更新的版本有冲突,建议不要修改agnoster.zsh-theme
,而是将其拷贝出来,命名为自己的主题文件,比如叫做myagnoster.zsh-theme
,然后只对myagnoster.zsh-theme
进行修改。
2、修改后将~/.zshrc
中的
ZSH_THEME="agnoster"
改为
ZSH_THEME="myagnoster"
这样就能避免冲突了。