Ubuntu меняет оболочку на меня

Эта машина Ubuntu показывает ошибки при запуске нового терминала. Проблема заключается в следующем:

Когда выполняется завершение bash ( . /usr/share/bash-completion/bash_completion ), оболочка имеет место не bash а некоторые определения переменных со списком local words=() выполняется (потому что только bash понимает списки).

Мое решение состояло в том, чтобы явным образом вызывать с bash /usr/share/bash-completion/bash_completion , но я хотел бы знать, почему другая оболочка вызывается при открытии терминала. Я думал, что, поскольку bash является моим дефолтом, он также будет использоваться во время поиска.

Я сделал echo $0 непосредственно перед вызовом файла заполнения bash, а выход – bash .

Что может привести к тому, что bash не будет использоваться для поиска?

Рассмотрение вопросов из комментариев:

Это происходит, когда я запускаю новую консоль, а это означает, что ядро ​​запустит новое окно терминала, вызвав ~/.profile , который, в свою очередь, сделает . "$HOME/.bashrc" . "$HOME/.bashrc" , который, в свою очередь, будет служить источником завершения bash ( . /usr/share/bash-completion/bash_completion )

У меня нет файла ~/.bash_completion .

Я не могу поместить echo "$0" внутрь bash_completion, потому что он не сработает и не будет выполнен.

Мои .bashrc и .profile являются стандартными, которые поставляются с Ubuntu. У меня нет .bash_profile . Вы можете найти их в своем локальном Ubuntu 14.04 под /etc/skel/

  • Извлечение запросов из файла журнала, которые не включают запрещенные строки
  • Переменные за пределами цикла while
  • Сценарий для просмотра папки для новых файлов?
  • Git alias multi-commands с; а также &&
  • Как я могу упростить эту команду только для использования awk?
  • Cron создает vim-процесс, но не отображает vim
  • указать оболочку для сеанса ssh
  • Расширяет ли расширение zsh по-разному в неинтерактивных скриптах?
  • One Solution collect form web for “Ubuntu меняет оболочку на меня”

    Проблема была не в оболочке или chsh, а в чем-то экзотическом. Это был глупый псевдоним на местном. Кто-то подумал, что было бы неплохо создать псевдоним, который отображает локальный IP-адрес, и назвал его «локальным», поэтому строка

     local cword words=() 

    провалился не потому, что оболочка не могла обрабатывать массивы. Это не удалось, потому что псевдоним расширялся, и () не имело смысла.

    Interesting Posts

    Очень низкая скорость исходящей сети

    Загрузочный ноутбук с внешними мониторами

    Объединение нескольких полей отдельно на основе одной (ключевой) колонки

    Regex не работает с grep

    Почему существует множество способов измерения использования диска?

    Запишите оба stdin и stdout программы

    inodes, сравнение потребляемого пространства (xfs, btrfs, ext4)

    Переключение программного обеспечения с Linux на OS X, что такое gotchas?

    Как копировать символические ссылки при сохранении правильности ссылки?

    Для маршрутизации пользователей на Wi-Fi

    Почему мой скрипт Python, установленный на пипсе, не является исполняемым для всех?

    Переключить экраны в xorg.conf без перезагрузки X

    Есть ли команда оболочки или утилита для вывода процесса кэширования?

    Почему следующая последовательность оболочек заканчивается так быстро?

    Как перенести первую строку в конец файла?

    Linux и Unix - лучшая ОС в мире.