Por que o Bash está retornando “No such file ..” quando o padrão corresponde a essa string?

1

Eu tenho o seguinte para loop:

for f in ~/.lo-rcs/common/*
do
   . $f
done

que está retornando esse erro:

bash: /home/sk/.lo-rcs/common/*: No such file or directory

Continuo classificando meus comandos bashrc em vários arquivos separados e mantendo-os abaixo de $HOME/.lo-rcs/common . Eu quero que todos os arquivos sejam originados no Bash automaticamente, mas ele continua lançando o erro "no such file ...".

Pergunta

Por que o Bash não está procurando por arquivos com o mesmo nome que a cadeia padrão de globbing?

  • NOTA # 1: .lo-rcs/common é a pasta de configuração local do rc que contém arquivos separados para aliases, um para variáveis de exportação, um para funções, etc., para facilitar a manutenção.
  • NOTA # 2: Todos os arquivos em .lo-rcs/common são arquivos ocultos, também conhecidos como. arquivos que são precedidos por um ponto.
por Madhavan Kumar 07.06.2015 / 14:40

1 resposta

7

~/.lo-rcs/common/* corresponde a todos os arquivos não ocultos nesse diretório, se não houver arquivos nesse diretório ou todos eles estiverem ocultos, o padrão será avaliado como resultado da mensagem de erro.

Não há bons motivos para ocultar esses arquivos. - Basta renomeá-los e tudo funciona conforme o esperado.

Se você realmente deseja que esses arquivos sejam ocultados, use ~/.lo-rcs/common/.* . Mas esteja ciente de que isso inclui . e .. .

    
por 07.06.2015 / 15:01