2016-01-02 58 views
3

現在我試圖從普通的Ubuntu bash中使用zsh。當我更改爲zsh shell時,我發現以前的環境變量(例如JAVA_HOME)在.bashrc中不能自動遷移到.zshrc。現在我只是複製它們(導出,別名在.bashrc中)到.zshrc。我想知道是否有其他方便的方式在.bashrc分享這些東西,並不需要明確複製它們?即使我在.zshrc中添加了一些東西,然後更改爲普通bash,仍然可以在.zshrc中分享它們,而無需將它們複製到.bashrczsh和普通shell如何在不復制對方的情況下共享環境變量和別名

我試圖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;\[email protected]\h: \w\a\]\[email protected]\h:\w$ 
+0

一個選項應該是源.bashrc文件中的.zshrc文件。 – user2672165

+0

地獄不是,採購不兼容shell的rc是有史以來最愚蠢的建議之一(不幸的是我看到它提出了很多)。編寫一個基本的POSIX sh兼容的env文件,並從'〜/ .zshenv','〜/ .bashrc'和'〜/ .bash_profile'來源。留下一切外殼特定的。你可能想看看我的設置:https://github.com/zmwangx/dotfiles/blob/master/env,以及bash和zsh runco​​ms在他們各自的子目錄中。我沒有將我的設置廣告宣傳爲最好的,但至少沒有破壞,我可以用相同的基本環境啓動任何其他POSIX shell。 – 4ae1e1

+0

謝謝@ 4ae1e1最後我決定採用這種方式:http:// stackoverflow。com/questions/764600/how-can-you-export-your-bashrc-to-zshrc – zhuguowei

回答

0
  • 我會(硬)鏈接.bashrc & .zshrc

OR

  • 來源與其他兩個文件中的一個。
+0

我試過你的方式,在'.bashrc' source'.zshrc'中,然後改成bash,出現錯誤。 exec bash autoload:command not found bash:/home/zhuguowei/.oh-my-zsh/oh-my-zsh.sh:第31行:語法錯誤附近的意外標記'(' bash:/ home/zhuguowei/.h-my-zsh/oh-my-zsh.sh:第31行:'對於config_file($ ZSH/lib/* .zsh);' – zhuguowei

+0

這意味着你的'.zshrc'包含兩個變量設置(如JAVA_HOME in你的原始文章)和代碼,後者可能是特定於bash或zsh的,我建議將變量設置和代碼分開,一個包含變量設置的文件可以由'.zshrc'和'.bashrc'兩個文件構成_ – mauro

+0

也建議將共享的部分放在'.profile'中https://stackoverflow.com/a/26020688/411282 –

1

.bashrc你可以使用export來(通常在UPPER_CASE)變量導出到將被髮送到您的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:(wikipedia

相關問題