我正试图从Bash转移到zsh。
我将.bashrc直接放到我的.zshrc中,当我再次尝试使用Bash时,它会导致很多错误。
如何将.bashrc导出为.zshrc?
答案 0 :(得分:71)
虽然lhunath的回答让我朝着正确的方向发展,但zsh似乎并没有自动提供.profile
。很多有关此主题的信息可以在this superuser post找到。
我正在使用的改编是在.profile
中放置常用的别名和函数,并按如下方式手动获取它们:
的.bashrc
source ~/.profile
.zshrc
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
答案 1 :(得分:24)
您无法“导出”将.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
代替。主要是为了你自己(最终,你与他们分享的人)的便携性。
答案 2 :(得分:2)
对我来说,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