Valide o .bash_profile antes de carregar?

5

Muitos programas de linha de comando fornecem opções que permitem validar um arquivo de configuração antes de carregá-lo. (Por exemplo, nginx -c path/to/file -t permite que os usuários validem um arquivo de configuração localizado em path/to/file antes de tentar iniciar o nginx com esse arquivo.

Existe um recurso semelhante para .bash_profile no bash?

    
por StudentsTea 07.10.2016 / 20:08

1 resposta

5

O Bash tem uma opção -n isso vai

Read commands but do not execute them. This may be used to check a script for syntax errors.

Ele irá gerar stderr e setar $? para 2, se houver um problema de sintaxe. Você poderia usá-lo em .bash_profile assim:

bash -n .bash_profile
if [[ $? -ne 0 ]]
then
   # handle an error
fi

Com base na sequência de comentários, não posso deixar de adicionar uma sugestão para adicionar essas variáveis globais de uma maneira diferente. Considere um caso um pouco planejado, em que o perfil .bash_profile do usuário teve um "retorno" no final dele. Anexar qualquer coisa (como atribuições de variáveis) seria ignorado por invocações futuras do bash. Considere colocar essas variáveis globais em / etc em algum lugar (como /etc/profile.d, supondo que esses arquivos sejam originados por seu / etc / profile); Dessa forma, você pode defini-los com base em várias sintaxes de shell (csh, bash) e não precisa verificar se eles estão definidos nos ambientes do usuário OU mexer em seus arquivos de ambiente.

Outra alternativa seria colocar essas atribuições de variáveis globais em um arquivo / etc customizado de sua escolha e incluir o código nos arquivos .bash_profile para origem desse arquivo, se ele existir. Isso tem a mesma desvantagem do seu plano atual - editar os arquivos locais do usuário - mas adicionou flexibilidade para usar diferentes arquivos globais para diferentes usuários / cenários.

    
por 07.10.2016 / 21:16