104

我正在尝试从 Bash 迁移到 zsh。

我把我的 .bashrc 直接放到了我的 .zshrc 中,当我再次尝试使用 Bash 时,它导致了很多错误。

如何将 .bashrc 导出到 .zshrc?

4

3 回答 3

131

虽然 lhunath 的回答将我推向了正确的方向,但 zsh 似乎并没有.profile自动来源。在这个超级用户帖子中可以找到很多关于这个主题的好信息。

我正在使用的适应是将通用别名和函数放入.profile并手动获取它们,如下所示:

~/.bashrc

source ~/.profile

~/.zshrc

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

emulate是一个 zsh 内置命令。使用单个参数设置 zsh 选项以尽可能多地模拟指定的 shell。

于 2014-09-24T15:21:16.420 回答
39

您不能将您的“导出.bashrc.zshrc. .bashrc是一个运行bash命令的文件。 .zshrc是一个运行zsh命令的文件。

你不能指望zsh能够bash在你.bashrc的..zshrc.bashrc.zshrc

如果你想为所有的 shell 提供一个通用的 shell 初始化文件;使用.profile(并删除.bashrc.zshrc)。它由所有 POSIX shell 提供。在那里,只坚持使用 POSIX shell 功能。然后该代码将在任何 POSIX shell 中运行。(不过,我不能 100% 确定它zsh是否符合 POSIX)。

看:http://mywiki.wooledge.org/DotFiles

虽然 - 我首先误读了你问题的这一部分 - 你不应该bash在运行你的时候遇到错误,.bashrc除非你把zsh命令放在那里。你是否?你得到什么错误?在我看来,您已将zsh代码添加到您的代码中.bashrc并且bash(显然)不理解。

顺便说一句,ojblass试图指出仅部分成功的可移植性。 zsh是一个很棒的外壳(虽然我自己没有获得荣誉),但是在编写脚本时;我建议你这样做#!/usr/bin/env bash。主要是为了您自己(以及最终与您共享的人)的可移植性。

于 2009-04-19T06:46:15.617 回答
3

对我来说,Ryen 的回答很方便。但我做了一点改变。我在用户目录(vim ~/.profile)的 .profile 中添加了所有别名命令。

alias gs='git status'
alias gp='git pull'
alias gph='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -m'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'
alias gfo='git fetch origin'

然后,我在 bash 和 zsh shell 中添加了 source 命令。

在 bash shell ( vim ~/.bashrc)

source ~/.profile

在 zsh shell ( vim ~/.zshrc )

source ~/.profile
于 2021-02-05T16:28:15.963 回答