linux – zsh和普通shell如何共享环境变量和别名而不相互复制

现在我尝试从正常的Ubuntu bash使用zsh.当我更改为zsh shell时,我发现.bashrc中以前的环境变量(例如JAVA_HOME)无法自动迁移到.zshrc.现在我只是将它们(导出,.bashrc中的别名)复制到.zshrc.我想知道是否有其他方便的方法在.bashrc中分享这些东西,并且不需要显式复制它们?即使我在.zshrc中添加内容然后更改为普通bash仍然可以在.zshrc中共享它们而不将它们复制到.bashrc.

我试图在.bashrc中输出.zshrc,然后更改为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中我也尝试过源.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中)导出到将发送到从shell执行的命令的环境中.

一个简单的.bashrc示例

# Here is the content of the .bashrc

export SOMETHING=42

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

您可以通过命令环境检查发送给环境的环境是什么

现在,在打开的bash中,您可以启动zsh,然后检查(使用env)zsh的当前环境.

现在在打开的zsh中,您可以回显$SOMETHING并查看答案42

注意:如果你不知道我为什么用42:(wikipedia)

点赞