2014-10-28 792 views
12

我已將shell更新爲ZSH。當我來源〜/ .bashrc。我得到這個錯誤shell升級後在.bashrc中找不到shopt命令

喲醫生有一些錯誤。 當我執行此命令

echo "export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules" >> ~/.bashrc && source ~/.bashrc 

/home/amerrnath/.bashrc:17: command not found: shopt /home/amerrnath/.bashrc:25: command not found: shopt /home/amerrnath/.bashrc:109: command not found: shopt /usr/share/bash-completion/bash_completion:35: parse error near]」

請幫我解決這個問題

+0

'zsh'不是'bash'。你爲什麼要輸入'.bashrc'? – FatalError 2014-10-28 18:39:36

+1

你的'bashrc'文件是爲'bash'寫的。 'zsh'不是bash。我很驚訝它試圖加載你的'.bashrc'。如果不是,並且您正在從'.profile'或類似工具手動採集它。停止。然後用適當的'zsh' init文件替換它。 – 2014-10-28 18:39:38

+0

作爲回答後 – ErlVolton 2014-10-28 18:42:03

回答

4

bashrc文件是爲bash寫的。 zsh不是bash

我很驚訝zsh正試圖加載您的.bashrc

如果不是,並且您手動採購它(從.profile或類似)。別那樣做。

然後,您可以改爲編寫適當的zsh init文件。

如果你想使用zsh那麼你需要使用zsh而不是bash

shopt是bash-ism。

[[是bash-ism。

+0

echo「export NODE_PATH = $ NODE_PATH:/ usr/local/lib/node_modules」>>〜/ .bashrc && source〜/ .bashrc。當我在shell中執行這個命令時,出現這個錯誤 – Amerrnath 2014-10-28 18:45:45

+0

@ user1475089是的,因爲你的'.bashrc'文件包含的東西不是合法的'zsh'。你需要停止這樣做。如果你希望在你的'zsh' shell中輸出,你可以將它保存在'zsh' init文件中,而不是'.bashrc'中。 – 2014-10-28 18:46:56

+0

可以在位詳細解釋你我 – Amerrnath 2014-10-28 18:51:45

6

shopt不是一個命令,而是一個內置的shell。 bash知道如何處理它,因爲它是一個bash內置的,但zsh不知道它是什麼。你會想看看setopt這是一個zsh內置,並將這些值放入一個新的.zshrc腳本。

+0

你能幫我如何使用setopt這個shopt – Amerrnath 2014-10-28 18:54:54

+1

這就是不是一個簡單的要求。你的.bashrc文件至少有109行,我不知道它們中有多少是註釋或空白。我只能建議你瀏覽你的.bashrc文件來弄清楚它在做什麼,然後找出如何在zsh中做同樣的事情。如果你從來沒有定製你的'.bashrc',那麼可能你需要它來改變你的命令:'echo「export NODE_PATH = $ NODE_PATH:/ usr/local/lib/node_modules」>>〜/ .zshrc && source 〜/ .zshrc' – Omnipresence 2014-10-28 19:36:34

25

zsh使用env配置文件~/.zshrc而不是~/.bashrc

,所以你需要附加您的ENV設置.zshrc文件,然後

source ~/.zshrc 

它必須工作。

rbenv github link

+0

這並不能解釋爲什麼'shopt'在bach中工作(因爲它不是bash內置的)。 @ Omnipresence的答案是更多的信息。 – 2016-07-12 06:45:00

10

要放置在〜/ .bashrc東西:

切換到慶典:

exec bash 

然後

source ~/.bashrc 

切換來砸不會影響上新的終端窗口。但是如果你想將當前窗口切換到zsh。

切換到zsh中:

exec zsh 

reference