Em PCs, as especificações do XDG Desktop permitem que os desktops individuais definam pastas diferentes para vários dados. Ao escrever um aplicativo que só será executado em servidores, deve-se simplesmente codificar /etc/myapp
, /var/cache/myapp
etc, ou existem possíveis variáveis de ambiente ou similares que devem ser verificadas?
A maioria dos aplicativos Linux que conheço, de fato, caminhos de hardcode, mas às vezes permitem redefini-los usando variáveis de ambiente e argumentos de linha de comando.
Não vejo nada de errado em codificar esses caminhos, mas talvez você facilite a vida de seus possíveis usuários de aplicativos se permitir especificar o local do arquivo de configuração como um argumento de linha de comando e neste arquivo conf permitir alterar o local de
/var/cache/myapp
.No caso de você codificar tudo, pelo menos, certifique-se de que os pacotes existentes em sua distribuição não entrem em conflito com seus locais. Para distribuições baseadas em DNF, será (este é um exemplo):
Então você obviamente não pode usar
/var/cache/dnf
.No final, será muito mais fácil ter tudo instalado em
/opt/appname
ou/usr/local/opt/appname
. Nenhum aplicativo Linux nativo usa esses diretórios.Deve-se codificar caminhos em programas? NÃO!
No mínimo, você deve tornar os caminhos configuráveis em tempo de compilação, para que o aplicativo possa ser instalado em
/var/local
, ou/opt
, ou/home/someuser
, ou onde o administrador do sistema desejar. Melhor ainda, tenha uma opção de linha de comando que possa ser usada para apontar o programa para seu arquivo de configuração, que pode ser usado para definir quaisquer outros caminhos necessários. (Com locais padrão definidos em tempo de compilação.)