如何将.bashrc 导出到.zhrc?

我正试着从 Bash 移到 zsh。

我把我的。巴希尔直接到我的。当我再次尝试使用 Bash 时,它会导致很多错误。

如何将.bashrc 导出到.zhrc?

118210 次浏览

你不能把你的 .bashrc变成 .zshrc.bashrc是一个运行 bash命令的文件。.zshrc是一个运行 zsh命令的文件。

您不能指望 zsh能够在 .bashrc中运行 bash命令,因此应该将其转换为新的 .zshrc,而不是试图从 .zshrc运行 .bashrc或将前者复制到后者。

If you want a common shell initialization file for all your shells; use .profile (and remove .bashrc and .zshrc). It's sourced by all POSIX shells. And in there, stick to POSIX shell features only. Then that code will run in any POSIX shell. (Though, I'm not 100% certain that zsh is POSIX compliant).

见: 译自: 美国《 http://mywiki.wooledge.org/dotfiles 》杂志网站(http://mywiki.woledge.org/DotFiles)原著:

Though - and I'd first misread this part of your question - you shouldn't experience errors from bash when running your .bashrc unless you put zsh commands in there. Did you? What errors are you getting? Sounds to me like you've added zsh code into your .bashrc and bash (obviously) doesn't understand.

顺便说一句,ojblass试图强调可移植性,但只取得了部分成功。zsh是一个很棒的 shell (尽管我自己还没有这个荣誉) ,但是在编写脚本时,我建议您使用 #!/usr/bin/env bash来代替它。主要是为了您自己(最终也是为了您与他们共享的人)的可移植性。

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

The adaption I'm using is putting common aliases and functions in .profile and manually sourcing them as follows:

~/.bashrc:

source ~/.profile

~/.zshrc:

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

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

对我来说,瑞安的答案很方便。但我做了一个小小的改变。我添加了所有别名命令。用户目录中的配置文件(vim ~/。个人资料)。

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'

Then , I added source command in bash as well as zsh shell.

在 bash shell 中(vim ~/. bashrc)

source ~/.profile

在 zsh shell 中(vim ~/. zhrc)

source ~/.profile

用于在 ~/. bash _ aliases中定义别名的用户

集中/使用别名的最简单方法是在 ~/. zchrc 中引用它们

Gedit ~/. zchrc:

Add the following at the end :

...
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
    

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

一旦完成,然后运行

source ~/.zshrc

瞧... 现在你们在 bash 和 zch 之间共享了一个化名

将两行代码添加到 ~/.zshrc中,zsh 将自动运行 .bashrc中的自定义命令。

# Exec ~/.bashrc and ~/.profile when using zsh
if [ -f '~/.profile' ]; then; source '~/.profile'; fi;
source <(awk '{ if(NR>118)print}' ~/.bashrc)
# Line 118 is works for Ubuntu's default .bashrc

Note:

  • NR>118在 Ubuntu 上工作,因为 Ubuntu 的默认 .bashrc有118行,这些行应该被忽略。
  • 您自定义的命令应该附加在 .bashrc的末尾。不要在系统的 bashrc 区域插入新的行