将此特定 .bash_profile 转换为 .zprofile

将此特定 .bash_profile 转换为 .zprofile

我有这个 .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存储库,被编写为同时支持bashshell 和zshshell,这意味着我们不需要对它们做任何特殊的事情。

从这些简单的部分开始,剩下一个主要问题,那就是提示字符串。

您的提示字符串使用显式颜色转义代码来显示红色$,后跟一个空格,当前工作目录显示为绿色。然后是一个被空格包围的冒号。当前工作目录使用 插入到提示符中\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_DIRTRIMbash%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

答案2

其中大部分可以复制到您的.zprofile.

您可以按照说明设置颜色这里, 例如:

%B{red}%F{blue}$%f%b 

创建一个蓝色的美元符号。

相关内容