78

我已将我的 shell 更新为 ZSH。当我source ~/.bashrc. 我收到此错误

哟 医生 有 一些 错误 . 当我执行这个命令

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

/home/amerrnath/.bashrc:17:找不到命令:shopt /home/amerrnath/.bashrc:25:找不到命令:shopt /home/amerrnath/.bashrc:109:找不到命令:shopt /usr/share/ bash-completion/bash_completion:35: `]]' 附近的解析错误

请帮我解决这个问题

4

7 回答 7

137

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

所以你需要将你的环境设置附加到.zshrc文件然后

source ~/.zshrc

它必须工作。

rbenv github链接

于 2015-09-07T15:02:55.467 回答
61

在 ~/.bashrc 中放置任何东西:

切换到 bash:

exec bash

然后

source ~/.bashrc

切换到 bash 不会影响新的终端窗口。但是如果你想将当前窗口切换到 zsh。

切换到 zsh:

exec zsh

参考

于 2016-02-18T07:17:02.747 回答
48

shopt不是命令,而是内置的 shell。bash知道如何处理它,因为它是bash内置的,但 zsh 不知道它是什么。您需要查看setopt哪个是zsh内置的,并将这些值放入新的 .zshrc 脚本中。

于 2014-10-28T18:45:35.200 回答
14

给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
于 2019-03-05T16:50:33.300 回答
9

您的bashrc文件是为bash. zsh不是bash

我很惊讶zsh正在尝试加载您.bashrc的内容。

如果不是,并且您正在手动(来自.profile或类似)采购它。别那样做。

然后你可以写一个合适的zsh初始化文件。

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

shopt是一种 bash 主义。

[[是一种 bash 主义。

于 2014-10-28T18:45:04.727 回答
3

shopt不是命令,而是内置的 shell。您可以通过在 bash 中运行以下命令来发现这一点:</p>

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 $*

第2步:

chmod +x /usr/local/bin/shopt

第三步:

ln -s /usr/local/bin/shopt /usr/bin/shopt

第4步:

echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc
于 2019-04-17T07:58:53.827 回答
0

由于某种原因,从 16.04 升级到 17.10 和 18.04 后,符号链接 /bin/sh 被设置回破折号而不是 bash。更新此链接:

sudo cd /bin && ln -sf bash sh

为我解决了这个问题

于 2018-06-23T16:15:14.617 回答