Alguns pensamentos aqui sobre por que os arquivos de configuração não são explodidos, opção por opção em um formato como:
config
default
key
key
...
key
other
key
key
...
onde o primeiro subdiretório é um tipo de configuração e cada arquivo dentro ('key's here) são todas opções de configuração separadas, cada uma com um valor que é o conteúdo do arquivo. Todos esses pontos são apenas coisas que aprendi ao longo do caminho, e certamente existem muitas exceções.
-
Em geral, a maioria dos utilitários UNIX / Linux opera em um único arquivo por vez, linha por linha , e não em vários arquivos. Por quê? Muitas razões, mas esta parece ser a maneira mais simples de lidar com a entrada. A maioria dos arquivos quando vistos de uma interface de programação são apenas uma série de linhas. Linhas (algum texto seguido por um fluxo de linha ASCII
\n
) são realmente a unidade mais básica de dados na maioria dos aplicativos, não em arquivos. ÁREA: Considere que o seu terminal foi projetado para ser impresso em papel, linha por linha, enquanto o usuário trabalhava. Honestamente, não mudou muito no modernotty
, pois ainda é tratado como uma interface serial. -
Considere uma situação em que há muitas e muitas opções de configuração para um programa complexo, como um servidor de soquete ou outro daemon. Para que o programa tenha que abrir centenas de arquivos para procurar possíveis derivações dos padrões incorre em duas penalidades, um limite de descritor de arquivo aberto (fácil de contornar) e um par de syscalls por arquivo. O syscalls pode somar porque um programa precisa pedir ajuda ao kernal para ler e abrir arquivos.
-
Atualizar e editar um arquivo geralmente é muito mais simples de fazer com editores tradicionais (dos quais
ed
é o vencedor claro: D) ou utilitários comosed
eawk
. Usar ferramentas tradicionais de edição em um host de opções de configuração baseadas em arquivos seria realmente inconveniente. Também pesquisar sobre muitas opções se tornaria um exercício para o shell de um usuário e não o realmente possível para um editor. Se a maioria das opções de configuração fossem apenas valores simples,echo
e alguns redirecionamentos de IOs seriam o editor de escolha (o que, se eu entender suas preferências, pode não ser tão ruim assim). -
Comentários. Arquivos de configuração podem ser mais comentários do que opção, e eu realmente gosto de comentários. Se os arquivos de configuração foram trocados por diretórios de configuração, é melhor que as pessoas se acostumem a fazer arquivos README e, de repente, temos um desagradável arquivo baseado em linhas lá;)
Em geral, eu diria que a configuração baseada em arquivos é apenas nos ossos dos sistemas UNIX / Linux. Poderia ser feito de uma maneira diferente? Certo. O paradigma atual é o melhor caminho? Pode ser para sistemas UNIX / Linux, mas não para outro ambiente em que os diretórios substituem arquivos como o ponto de interface com a entrada.