Comportamento diferente do cd com vários argumentos nas versões do bash

14

Colocando aqui algo que está me intrigando; atualizar um servidor de aplicativos de Jessie para Stretch quebrou um bashscript.

Após a investigação, reduzimos a mudança de comportamento do cdcomando. Não estou discutindo aqui se o que o script está fazendo é uma boa ideia, ou se poderia ser melhorada, estou apenas focando em uma mudança de comportamento / consciência das mudanças de mentalidade.

Jessie

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

cd trabalha e cds no primeiro diretório; na verdade * -run é um link simbólico para o mesmo diretório.

Esticam

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

bash é 4.3.30 (1) em Jessie e 4.4.12 (1) em Stretch.

Por que a mudança de comportamento entre Jessie e Stretch?

Rui F Ribeiro
fonte

Respostas:

23

Veja as Notas Relase do bash 4.4 , especialmente

qq. Há uma nova opção configurável em config-top.h que faz com que vários argumentos de diretório sejam cdum erro fatal.

Aliás, eu não sabia. Acabei de pesquisar no "bash cd number 4.4".

choroba
fonte
8
Interessante. Uma coisa boa imho, pois evita silenciosamente descartar argumentos adicionais quando se tem um bug de escape.
espectros
@spectras O comentário interessante, embora eu suspeitasse que poderia ter implicações em termos de segurança, não estava olhando desse ângulo.
Rui F Ribeiro