Дэш действует по неизвестной причине

1

Я перезапустил свою машину 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 терминалов, я бы хотел избежать этих издержек, если это правда.

Спасибо за любые идеи в этом.

Newton Falls
источник
[[ есть и всегда был только bash. Это внутренняя команда (в отличие от [, который является двоичным).
Dennis
Dash - более легкая версия bash, поэтому я предполагаю, что то же самое применимо. В мою систему не было внесено никаких изменений с учетом вышесказанного - по крайней мере, о чем я знаю.
Newton Falls
1
[[ работает в bash и ksh, но не в dash. Я проверил это в своей системе, чтобы проверить. Эта презентация соглашается. Я не уверен, что изменилось в вашей системе, но [[ не может работать с тире. Остальные ваши проблемы должны быть связаны с тем, что .bash_profile не могут быть получены.
Dennis
Спасибо. Я не знаю, что случилось. Я могу просто изменить ссылку / bin / sh, чтобы она указывала на bash, и с этим покончено.
Newton Falls
Мое лучшее предположение, что это то, что произошло в первую очередь. изменения /etc/passwd более стабильный и не позволяет неинтерактивным оболочкам использовать Bash по умолчанию является тяжелее, в конце концов).
Dennis

Ответы:

2

Вы не могли использовать тире все это время:

  • Дэш не может понять [[, поскольку это одна из внутренних команд Bash.

  • Тире не поддерживает завершение вкладки.

  • Тире не поддерживает клавиши со стрелками (редактирование, история).

( Источник )

Единственное возможное объяснение - то, что ваша оболочка по умолчанию изменилась как-то. Я, очевидно, не могу знать, как это произошло, но я могу думать только о двух путях:

  • Что-то отредактировано /etc/passwd и заменил вашу оболочку по умолчанию. Это очень маловероятно.

  • Вы обращались к Bash через символическую ссылку (скорее всего /bin/sh ), и недавнее обновление установило символическую ссылку на ее цель по умолчанию.

Пока это является Верно, что Bash тяжелее, чем Dash, это не должно быть проблемой с терминалами (для чего предназначен Bash).

Тем не менее, неинтерактивные оболочки по-прежнему должны использовать Dash по умолчанию (вот почему /bin/sh должен указывать на тире).

Dennis
источник