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?


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”.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.