
Me encontré con un comportamiento extraño hoy. Me pregunto si alguien aquí puede decirme qué se está comportando de manera diferente. El entorno es un servidor RHEL 6.7.
Ejecuto el siguiente comando:
yum list installed *mysql*
Si mi cwd es/o varios otros lugares, obtengo el siguiente resultado:
Installed Packages MySQL-client-advanced.x86_64 5.6.27-1.el6 @/MySQL-client-advanced-5.6.27-1.el6.x86_64 MySQL-server-advanced.x86_64 5.6.27-1.el6 @/MySQL-server-advanced-5.6.27-1.el6.x86_64 MySQL-shared-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-advanced-5.6.27-1.el6.x86_64 MySQL-shared-compat-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-compat-advanced-5.6.27-1.el6.x86_64
En algunas otras carpetas (incluyendo/opt en este servidor) ejecuto el mismo comando y obtengo este resultado:
Error: No matching Packages to list
Ahora sé que normalmente necesito evitar el comodín en este comando. Si lo ejecuto como:
yum list installed \*mysql\*
entonces obtengo el resultado correcto en ambas ubicaciones. Supongo que esto se debe a cómo bash agrega comodines. Lo que realmente quiero saber ahora es por qué lo coloca en una carpeta pero no en la otra. Estoy ejecutando ambos como root, printenv muestra resultados idénticos (aparte de PWD), literalmente lo único que cambia entre ejecutar el comando ambas veces escd /opt
¿Alguien puede decirme por qué sucede esto o qué cosas debo observar para ver por qué podría ser diferente? tia
Respuesta1
Esto se debe a que el resultado del *mysql*
globbing depende del contenido del directorio en el que se encuentra. Su shell interpreta el carácter * (a menos que lo escape o lo oculte entre comillas) intentando hacer coincidirlo con los nombres de los archivos en el directorio.
Para ilustrar, ejecute (en cada uno de los directorios en cuestión)
echo yum list installed '*mysql*'
echo yum list installed *mysql*
ls -ld *mysql*