Я перезапустил свою машину Kubuntu - из меню leave->restart
если это имеет значение Обычно мои терминальные окна открываются автоматически после перезагрузки, но на этот раз моя подсказка была неправильной и куча других странных вещей.
Теперь / bin / sh - это ссылка на / bin / dash, и dash, похоже, загружен, но внезапно становится намного тупее, чем до перезагрузки. Теперь это не признает, что shopt
является. Когда я пытаюсь расставить все точки, мой профиль ( . ~/.bash_profile
) Я получаю ошибку как /bin/sh: 28: /etc/bash_completion: [[: not found
, В командной строке завершение команды не работает, ни вверх & amp; клавиши вниз для истории команд.
Я сознательно не загружал никаких пакетов, которые должны были быть испорчены с этим. Есть ли веская причина, почему это должно внезапно начаться?
Сейчас я казнил /bin/bash
из командной строки моего терминала, и все, кажется, хорошо, но это не объясняет, что не так с dash
, Также bash
якобы тяжелее, чем тире, и, поскольку я открываю около 20 терминалов, я бы хотел избежать этих издержек, если это правда.
Спасибо за любые идеи в этом.
источник
[[
есть и всегда был только bash. Это внутренняя команда (в отличие от[
, который является двоичным).[[
работает в bash и ksh, но не в dash. Я проверил это в своей системе, чтобы проверить. Эта презентация соглашается. Я не уверен, что изменилось в вашей системе, но[[
не может работать с тире. Остальные ваши проблемы должны быть связаны с тем, что.bash_profile
не могут быть получены./etc/passwd
более стабильный и не позволяет неинтерактивным оболочкам использовать Bash по умолчанию является тяжелее, в конце концов).Ответы:
Вы не могли использовать тире все это время:
Дэш не может понять
[[
, поскольку это одна из внутренних команд Bash.Тире не поддерживает завершение вкладки.
Тире не поддерживает клавиши со стрелками (редактирование, история).
( Источник )
Единственное возможное объяснение - то, что ваша оболочка по умолчанию изменилась как-то. Я, очевидно, не могу знать, как это произошло, но я могу думать только о двух путях:
Что-то отредактировано
/etc/passwd
и заменил вашу оболочку по умолчанию. Это очень маловероятно.Вы обращались к Bash через символическую ссылку (скорее всего
/bin/sh
), и недавнее обновление установило символическую ссылку на ее цель по умолчанию.Пока это является Верно, что Bash тяжелее, чем Dash, это не должно быть проблемой с терминалами (для чего предназначен Bash).
Тем не менее, неинтерактивные оболочки по-прежнему должны использовать Dash по умолчанию (вот почему
/bin/sh
должен указывать на тире).источник