在shell更新之后,在.bashrc中找不到shopt命令

时间:2014-10-28 18:38:18

标签: bash sh zshrc shopt

我已将我的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]]'

请帮我解决这个问题

7 个答案:

答案 0 :(得分:50)

zsh使用env个人资料~/.zshrc,而不是~/.bashrc

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

source ~/.zshrc

必须有效。

rbenv github link

答案 1 :(得分:26)

在〜/ .bashrc中放置任何内容:

切换到bash:

exec bash

然后

source ~/.bashrc

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

切换到zsh:

exec zsh

reference

答案 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