Различное поведение cd с несколькими аргументами в выпусках bash

14

Размещение здесь чего-то, что озадачивает меня; обновление сервера приложений от Jessie до Stretch сломало bashскрипт.

После расследования мы сузили это до изменения поведения cdкоманды. Я не обсуждаю здесь, если то, что делает сценарий, является хорошей идеей или может быть улучшено, я просто фокусируюсь на изменении поведения / осознании изменений мышления.

Джесси

$echo *-*
xxxx-1.0b xxxx-run
$cd *-*

CD работает и CD в первый каталог; на самом деле * -run - это символическая ссылка на тот же каталог.

Протяжение

$echo *-*
xxxx-1.0b xxxx-run
$cd *-*
bash: cd: too many arguments

bash составляет 4.3.30 (1) в Джесси, и 4.4.12 (1) в Stretch.

Почему изменения в поведении между Джесси и Стретч?

Руи Ф Рибейро
источник
2
Также: askubuntu.com/q/905832/158442
Муру

Ответы:

23

Смотрите Relase Notes из Bash 4.4 , особенно

кв.кв. В config-top.h есть новая опция, которую можно задать несколькими ошибками в каталоге cd.

Кстати, я не знал. Я просто погуглил для "bash cd number 4.4".

choroba
источник
8
Интересный. Хорошая вещь, imho, поскольку она избегает молчаливого отбрасывания дополнительных аргументов, когда у вас есть выходящая ошибка.
spectras
@spectras Интересный комментарий, хотя я подозревал, что это может иметь последствия для безопасности, не смотрел с этой точки зрения.
Руи Ф Рибейро