如何将.bashrc导出到.zshrc?

时间:2009-04-19 01:07:14

标签: zsh bash zshrc

我正试图从Bash转移到zsh。

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

如何将.bashrc导出为.zshrc?

3 个答案:

答案 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代码添加到.bashrcbash中(显然)不明白。

另外,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