
Tive um comportamento estranho hoje. Querendo saber se alguém aqui pode me dizer o que está se comportando de maneira diferente. O ambiente é um servidor RHEL 6.7.
Eu executo o seguinte comando:
yum list installed *mysql*
Se meu cwd for/ou vários outros lugares, recebo a seguinte saída:
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
Em algumas outras pastas (incluindo /opt neste servidor), executo o mesmo comando e obtenho esta saída:
Error: No matching Packages to list
Agora eu sei que normalmente preciso escapar do curinga neste comando. Se eu executá-lo como:
yum list installed \*mysql\*
então obtenho a saída correta em ambos os locais. Presumo que isso se deva ao modo como o bash globs curingas. O que eu realmente quero saber agora é por que ele fica em uma pasta, mas não na outra. Estou executando ambos como root, printenv mostra saída idêntica (diferente de PWD), literalmente a única coisa que muda entre a execução do comando nas duas vezes écd /opt
Alguém pode me dizer por que isso está acontecendo ou o que observar para ver por que pode ser diferente? TIA
Responder1
Isso ocorre porque o resultado do *mysql*
globbing depende do conteúdo do diretório em que você está. Seu shell interpreta o caractere * (a menos que você o escape ou oculte entre aspas) tentando combiná-lo com os nomes dos arquivos no diretório.
Para ilustrar, execute (em cada um dos diretórios em questão)
echo yum list installed '*mysql*'
echo yum list installed *mysql*
ls -ld *mysql*