我已将我的shell更新为ZSH。当我来源〜/ .bashrc。我收到此错误
哟医生有些错误。 当我执行此命令时
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 :(得分:50)
zsh使用env个人资料~/.zshrc
,而不是~/.bashrc
。
所以你需要将你的env设置附加到.zshrc文件然后
source ~/.zshrc
必须有效。
答案 1 :(得分:26)
在〜/ .bashrc中放置任何内容:
切换到bash:
exec bash
然后
source ~/.bashrc
切换到bash不会影响新的终端窗口。但是如果你想将当前窗口切换到zsh。
切换到zsh:
exec zsh
答案 2 :(得分:12)
shopt
不是命令,而是内置的shell。 bash
知道如何处理它,因为它是bash
内置的,但zsh不知道它是什么。您将要查看setopt
内置zsh
的内容,并将这些值放入新的.zshrc脚本中。
答案 3 :(得分:7)
您的bashrc
文件是为bash
编写的。 zsh
不是bash
。
我很惊讶zsh
正在尝试加载.bashrc
。
如果不是,并且您手动采购(来自.profile
或类似)。停止这样做。
然后你可以编写一个合适的zsh
init文件。
如果您想使用zsh
,则需要使用zsh
而不是bash
。
shopt
是一种抨击。
[[
是一种抨击。
答案 4 :(得分:2)
使用shopt作为别名,并将其命名为zsh
此处介绍了一种快速解决方案:https://github.com/larz258/Zshopt
sudo vi /usr/bin/shopt
在商店内
#!/bin/bash
args='';
for item in $@
do
args="$args $item";
done
shopt $args;
使其可执行
sudo chmod +x /usr/bin/shopt
在您的.zshrc中创建别名
echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc
答案 5 :(得分:0)
由于某种原因,从16.04升级到17.10并升级到18.04后,符号链接/ bin / sh被设置回破折号而不是bash。更新此链接:
sudo cd /bin && ln -sf bash sh
为我解决了这个问题
答案 6 :(得分:0)
shopt
不是命令,而是内置的shell。您可以通过在bash中运行以下命令来找出这一点:
type shopt
输出为:
shopt is a shell builtin
第1步:
echo "#! /bin/bash\n\nshopt \$*\n" > /usr/local/bin/shopt
然后您将获得/ usr / local / bin / shopt:
#! /bin/bash
shopt $*
第二步:
chmod +x /usr/local/bin/shopt
第3步:
ln -s /usr/local/bin/shopt /usr/bin/shopt
第4步:
echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc