Подтвердить что ты не робот

Команда shopt не найдена в .bashrc после обновления оболочки

Я обновил свою оболочку до 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]]

Пожалуйста, помогите мне решить эту проблему.

4b9b3361

Ответ 1

zsh использует профиль env ~/.zshrc, а не ~/.bashrc.

поэтому вам нужно добавить настройки env в файл .zshrc, а затем

source ~/.zshrc

Он должен работать.

ссылка rbenv github

Ответ 2

Поместить что-нибудь в ~/.bashrc:

Переключитесь на bash:

exec bash

Тогда

source ~/.bashrc

Переход на bash не повлияет на новое окно терминала. Но если вы хотите переключить текущее окно на zsh.

Переключиться на zsh:

exec zsh

ссылка

Ответ 3

shopt не является командой, а встроенной оболочкой. bash знает, что с ним делать, потому что это bash встроенный, но zsh не знает, что это такое. Вы захотите заглянуть в setopt, который является zsh Built-in, и поместите эти значения в новый .zshrc script.

Ответ 4

Ваш файл bashrc был написан для bash. zsh не bash.

Я удивлен, что zsh пытается загрузить ваш .bashrc вообще.

Если это не так, и вы подбираете его вручную (от .profile или аналогичного). Прекратите делать это.

Затем вы можете написать соответствующий файл zsh.

Если вы хотите использовать zsh, вам нужно использовать zsh, а не bash.

shopt является bash -ism.

[[ является bash -ism.

Ответ 5

Сделай псевдоним shopt и назови его бросил зш

Быстрое решение описано здесь: https://github.com/larz258/Zshopt

sudo vi /usr/bin/shopt

Внутри магазина

#!/bin/bash
args='';
for item in [email protected]
  do
    args="$args $item";
  done
shopt $args;

сделать его исполняемым

sudo chmod +x /usr/bin/shopt

Создайте псевдоним в вашем .zshrc

echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc

Ответ 6

По какой-то причине после обновления с 16.04 до 17.10 и до 18.04 символическая ссылка /bin/sh была возвращена в режим dash, а не bash. Обновление этой ссылки:

sudo cd /bin && ln -sf bash sh

решил эту проблему для меня

Ответ 7

shopt это не команда, а встроенная оболочка. Вы можете узнать это, запустив в 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 $*

шаг 2:

chmod +x /usr/local/bin/shopt

шаг 3:

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

step4:

echo "alias shopt='/usr/bin/shopt'" >> ~/.zshrc