Validar nome de variável de ambiente conforme POSIX
Confira se o nome de uma variável de ambiente é portável antes que ele quebre uma implantação: DATABASE_URL passa, enquanto um nome que começa com dígito ou tem hífen falha mostrando a regra violada. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- DATABASE_URL
- Nome
- DATABASE_URL
- Convenção
- POSIX
Nomes de variáveis de ambiente parecem simples até uma implantação falhar por causa de um número inicial, hífen, espaço ou caractere não portátil. Este validador verifica um nome segundo a convenção POSIX: aceita letras ASCII, números e sublinhados, mas exige uma letra ou sublinhado no início. Um nome válido recebe uma confirmação clara; um nome inválido gera uma mensagem que aponta a regra violada. Assim, você pode aplicar a verificação em editores, formulários, rotinas de CI e geradores de configuração.
O que o validador aceita
Um nome portátil usa de propósito um conjunto pequeno de caracteres. O primeiro deve ser uma letra ASCII de A a Z ou de a a z, ou um sublinhado. Depois dele, números de 0 a 9 também são permitidos.
Por isso, DATABASE_URL, HOME, _INTERNAL_FLAG e API2_TOKEN são válidos. O validador examina a string inteira sem tentar corrigi-la, normalizá-la ou remover espaços. Esse rigor impede que uma limpeza silenciosa transforme o valor enviado por você em outro identificador.
Maiúsculas e minúsculas são preservadas e relevantes: PATH e Path são nomes diferentes. A verificação trata apenas da sintaxe portátil; ela não informa se a variável existe, foi exportada, tem valor ou é aceita por um programa específico. Em caso de sucesso, a resposta devolve o nome original, o indicador de validade e uma confirmação objetiva.
Como os erros são explicados
Cada erro recebe uma explicação adequada para facilitar a correção. Uma string vazia falha porque não tem caractere inicial. Um nome iniciado por número viola a regra específica da primeira posição, embora números sejam permitidos depois.
Hífen, ponto, espaço ou letra fora de ASCII no início também são recusados. Se o começo for válido e houver um caractere proibido adiante, a mensagem identifica esse caractere e sua posição, contada a partir de 1. Uma atribuição como NAME=value não é confundida com um nome: o sinal de igual também é rejeitado.
Uso em fluxos de desenvolvimento
A verificação cabe em qualquer ponto no qual nomes sejam aceitos antes de chegarem a um shell ou ambiente de processo. Um formulário de implantação pode validar a chave assim que você a envia e destacar a regra que precisa de atenção. Um gerador pode rejeitar chaves inválidas antes de criar um arquivo dotenv, manifesto de contêiner, definição de serviço ou mapa de segredos de CI.
Linters podem aplicar a mesma regra a modelos e exemplos. A validade sintática não garante compatibilidade com toda ferramenta, pois alguns sistemas reservam prefixos ou impõem regras extras.
Casos de uso
Validar configurações de implantação
Confira os nomes antes de salvar uma configuração que o ambiente de execução talvez não consiga expor.
Proteger geradores dotenv
Recuse chaves malformadas antes de gerar um arquivo que só falharia quando o aplicativo fosse iniciado.
Adicionar uma verificação ao CI
Valide modelos e nomes documentados com uma regra determinística durante as verificações do repositório.
Perguntas frequentes
Quais caracteres são permitidos?
São aceitos letras ASCII, números e sublinhados. O primeiro caractere deve ser uma letra ASCII ou sublinhado.
O nome pode começar por um número?
Não. Números só são permitidos após o primeiro caractere: 2FA_TOKEN falha, mas TOKEN_2FA passa.
A verificação confirma se a variável existe?
Não. Ela valida somente o nome proposto e não lê o ambiente nem verifica exportação ou atribuição.
Nomes em letras minúsculas são válidos?
Sim. Letras ASCII maiúsculas e minúsculas são aceitas, e a capitalização original é preservada.
A ferramenta corrige ou apara um nome inválido?
Não. O texto inteiro é verificado exatamente como foi digitado, sem tirar espaços nem consertar caracteres, porque uma limpeza silenciosa poderia transformar o seu nome em outro. Em vez disso, o erro diz qual regra falhou e onde.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/env-var-name-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"DATABASE_URL"}'const res = await fetch("https://api.kit.forhosting.com/dev/env-var-name-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "DATABASE_URL"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/env-var-name-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "DATABASE_URL"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/env-var-name-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"DATABASE_URL"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"DATABASE_URL"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/env-var-name-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "DATABASE_URL"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.env_var_name_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Como os erros são explicados
Por exemplo, API-KEY falha no hífen, enquanto API KEY falha no espaço. Os erros usam o código invalid_input, permitindo que clientes API diferenciem um dado corrigível de uma falha interna sem interpretar mensagens de transporte.
Uso em fluxos de desenvolvimento
O algoritmo não acessa a rede, não lê o ambiente, não armazena a entrada e não depende de horário ou aleatoriedade; portanto, produz o mesmo resultado no navegador, em testes e na API. Cada solicitação API custa US$ 0,002.
Perguntas técnicas
Hífens ou pontos são permitidos?
Não. Hífen, ponto, espaço, sinal de igual ou outro caractere fora do conjunto portátil gera invalid_input.
Quanto custa uma solicitação API?
Cada solicitação API custa US$ 0,002. A mesma verificação determinística também roda no navegador.