我有这个 .bash_profile:
alias ip='ipconfig getifaddr en0'
PS1="\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : "
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
自从 MacOS 更新到 Catalina (https://support.apple.com/en-us/HT208050) zsh 成为默认终端。
我如何将其转换为 zsh .zprofile?
答案1
别名、-s
测试、使用 dot 命令获取其他文件以及创建环境变量在大多数当前的类似 shellexport
中都是相同的。sh
这些东西在 shell 中的工作方式zsh
与在bash
.
shellzsh
不要求您对所有变量扩展加双引号,这意味着您可以删除一些双引号。
bash_completion
和脚本nvm.sh
,如果它们与中找到的相同Githubnvm
存储库,被编写为同时支持bash
shell 和zsh
shell,这意味着我们不需要对它们做任何特殊的事情。
从这些简单的部分开始,剩下一个主要问题,那就是提示字符串。
您的提示字符串使用显式颜色转义代码来显示红色$
,后跟一个空格,当前工作目录显示为绿色。然后是一个被空格包围的冒号。当前工作目录使用 插入到提示符中\w
,这也受到PROMPT_DIRTRIM
中变量的影响bash
。我们假设它PROMPT_DIRTRIM
没有设置。
您的提示字符串位于bash
:
PS1='\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : '
您的提示字符串zsh
(无颜色):
PS1='%# %~ : '
此提示会显示#
在 root shell 中,但会显示%
在非 root shell 中。如果您想要在非 root shell 中$
使用 来代替,请使用来代替。提示符用于包含当前工作目录,您可以在 后添加数字以获得与中设置相同的效果,这样最多会包含当前工作目录的目录路径的最后两个路径名组成部分。%
%(!.#.$)
%#
%~
%
PROMPT_DIRTRIM
bash
%2~
为其添加颜色:
PS1='%F{red}%#%f %F{green}%~%f : '
在手册中阅读有关提示以及如何设置提示的更多信息zshmisc
(搜索标题为“提示序列的扩展”的部分)。
将所有这些结合在一起,我们最终得到如下结果:
alias ip='ipconfig getifaddr en0'
PS1='%F{red}%#%f %F{green}%~%f : '
export NVM_DIR=$HOME/.nvm
[ -s $NVM_DIR/nvm.sh ] && . $NVM_DIR/nvm.sh
[ -s $NVM_DIR/bash_completion ] && . $NVM_DIR/bash_completion