Diferente comportamiento de cd con múltiples argumentos en lanzamientos bash

14

Publicarlo aquí es algo que me desconcierta; actualizar un servidor de aplicaciones de Jessie a Stretch rompió un bashscript.

Tras la investigación, lo redujimos a un cambio de comportamiento del cdcomando. No estoy discutiendo aquí si lo que está haciendo el guión es una buena idea, o si podría mejorarse, solo me estoy centrando en un cambio de comportamiento / conciencia de los cambios de mentalidad.

Jessie

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

cd funciona y cds al primer directorio; En realidad * -run es un enlace simbólico al mismo directorio.

Tramo

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

bash es 4.3.30 (1) en Jessie y 4.4.12 (1) en Stretch.

¿Por qué el cambio de comportamiento entre Jessie y Stretch?

Rui F Ribeiro
fuente

Respuestas:

23

Vea las Notas Relase de bash 4.4 , especialmente

qq. Hay una nueva opción configurable en config-top.h que convierte múltiples argumentos de directorio en cdun error fatal.

Por cierto, no lo sabía. Acabo de buscar en Google "bash cd número 4.4".

choroba
fuente
8
Interesante. Una buena cosa, ya que evita descartar silenciosamente argumentos adicionales cuando uno tiene un error de escape.
espectras
@spectras Un comentario interesante, aunque sospeché que podría tener implicaciones en términos de seguridad, no fue desde ese ángulo.
Rui F Ribeiro