zsh和普通shell如何共享环境variables和别名,而不需要相互复制

现在我试图从普通的Ubuntu bash中使用zsh。 当我更改为zsh shell时,我发现以前的.bashrc环境variables(例如JAVA_HOME)不能自动迁移到.zshrc 。 现在我只是将它们(导出,别名在.bashrc中)复制到.zshrc 。 我想知道是否有其他方便的方式来共享这些东西在.bashrc ,不需要明确地复制它们? 甚至当我在.zshrc添加一些东西,然后改成正常的bash,仍然可以在.zshrc中将它们共享,而不需要将它们复制到.bashrc

我试图source .zshrc.bashrc ,然后改变为bash,发现下面的错误

 exec bash autoload: command not found bash: /home/zhuguowei/.oh-my-zsh/oh-my-zsh.sh: line 31: syntax error near unexpected token `(' bash: /home/zhuguowei/.oh-my-zsh/oh-my-zsh.sh: line 31: `for config_file ($ZSH/lib/*.zsh); do' 

而在.zshrc我也尝试了source .bashrc ,也有错误

 source .zshrc /home/zhuguowei/.bashrc:16: command not found: shopt /home/zhuguowei/.bashrc:24: command not found: shopt /home/zhuguowei/.bashrc:108: command not found: shopt /usr/share/bash-completion/bash_completion:35: parse error near `]]' \[\e]0;\u@\h: \w\a\]\u@\h:\w$ 

.bashrc您可以使用export将变量(通常在UPPER_CASE中) export到将发送到从shell执行的命令的环境中。

一个简单的.bashrc例子

 # Here is the content of the .bashrc export SOMETHING=42 

现在在bash中,在获取bashrc之后,我有一个名为SOMETHING的环境变量,其中包含42

你可以查看什么是环境beeing发送处理与命令env

现在,在打开的bash ,可以启动zsh ,然后检查( env )zsh的当前环境。

现在在打开的zsh ,你可以echo $SOMETHING并看到答案42

注意:如果你不知道我为什么用42 :( 维基百科 )

  • 我会(很难)链接.bashrc.zshrc

要么

  • 从另一个来源的两个文件之一。