Różne zachowanie cd z wieloma argumentami w wydaniach bash

14

Zamieszczam tutaj coś, co mnie zastanawia; uaktualnienie serwera aplikacji z Jessie do Stretch spowodowało uszkodzenie bashskryptu.

Podczas dochodzenia zawęziliśmy go do zmiany zachowania cdpolecenia. Nie dyskutuję tutaj, czy to, co robi skrypt, jest dobrym pomysłem, czy też można je ulepszyć, skupiam się tylko na zmianie zachowania / świadomości zmiany sposobu myślenia.

Jessie

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

cd działa i cd do pierwszego katalogu; właściwie * -run to symboliczne łącze do tego samego katalogu.

Rozciągać

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

bash wynosi 4.3.30 (1) w Jessie i 4.4.12 (1) w Stretch.

Skąd ta zmiana zachowania między Jessie a Stretch?

Rui F. Ribeiro
źródło

Odpowiedzi:

23

Zobacz wypuścić nuty bash 4.4 , zwłaszcza

qq. W config-top.h dostępna jest nowa opcja, która powoduje, że wiele argumentów katalogu powoduje cdbłąd krytyczny.

BTW, nie wiedziałem. Właśnie wyszukałem hasło „bash cd number 4.4”.

choroba
źródło
8
Ciekawy. Dobre imho, ponieważ pozwala uniknąć dyskretnego odrzucania dodatkowych argumentów, gdy ma się ucieczkę.
spectras
@spectras Ciekawy komentarz, choć podejrzewałem, że może mieć to wpływ na bezpieczeństwo, nie patrzył z tego punktu widzenia.
Rui F Ribeiro