mb envs
Gerencia variáveis de ambiente globais injetadas em plugins e no comando mb run.
Para entender ordem de precedência, vaults de projeto e quando usar cada abordagem, veja Variáveis de ambiente.
Subcomandos
mb envs list
Lista variáveis de um vault.
Modos de exibição:
- Interativo (terminal): Interface fzf com colunas simplificadas (VAR | VAULT) e preview automático no lado direito
- Pipe/redirecionamento: Tabela completa com colunas (VAR | VAULT | ARMAZENAMENTO)
- JSON: Todos os dados em formato estruturado com
--json/-J - Texto: Formato key=value com
--text/-T
# Modo interativo (padrão)
mb envs list
mb envs ls
mb envs l
# Filtrar por vault
mb envs list --vault staging
mb envs list --vault project # só a raiz de envs no mbcli.yaml
mb envs list --vault project/staging # só o sub-mapa envs.staging
# Mostrar valores reais
mb envs list --show-secrets
# Saída em formato JSON
mb envs list --json
mb envs list --json | jq '.API_BASE'
mb envs list --json | jq 'keys[]'
# Saída em formato texto (key=value)
mb envs list --text
mb envs list --text | grep API
# Pipe com tabela completa
mb envs list | cat
mb envs list | grep API
mb envs list | wc -l
mb envs list | grep keyring
Preview automático:
No modo interativo, ao navegar com ↑↓ um preview aparece automaticamente no lado direito mostrando detalhes da variável selecionada:
- Valor (ou
***para secrets) - Vault
- Tipo de armazenamento (local, keyring, 1password, projeto)
O preview é renderizado com gum format para melhor legibilidade e atualiza em tempo real conforme você navega.
Colunas no modo interativo:
| Coluna | Descrição |
|---|---|
| VAR | Nome da variável |
| VAULT | Vault onde está armazenada |
Preview automático (modo interativo):
Ao navegar com ↑↓, o preview mostra informações adicionais:
| Campo | Descrição |
|---|---|
| Valor | Valor da variável (ou *** para secrets) |
| Vault | Nome do vault |
| Armazenamento | Tipo: local, keyring, 1password, projeto |
| Arquivo | Caminho completo do arquivo onde está armazenado |
Colunas no modo pipe/redirecionamento:
| Coluna | Descrição |
|---|---|
| VAR | KEY=VALUE (valor truncado se muito longo) |
| VAULT | Vault onde está armazenada |
| ARMAZENAMENTO | local, keyring, 1password, projeto |
| Flag | Descrição |
|---|---|
--vault <nome> | Vault em disco .env.<nome> no diretório de configuração (ex.: ~/.config/mb/.env.staging no Linux) com overlay do mbcli.yaml. Use project para a raiz de envs no YAML, ou project/<nome> para apenas o sub-mapa (sem misturar a raiz) |
--show-secrets | Mostra valores reais em vez de *** |
--json / -J | Emite {"CHAVE":"valor", ...} |
--text / -T | Emite CHAVE=valor por linha (sem coluna de vault) |
--jsone--textsão mutuamente exclusivos.
Variáveis do mbcli.yaml: o mb envs list também mostra as variáveis definidas no mbcli.yaml da raiz do projeto. Elas aparecem com vault project (escalares na raiz de envs) e project/<nome> (sub-mapas), e armazenamento projeto. Essas variáveis são versionadas no repositório e mescladas automaticamente — não é possível editá-las com mb envs set --vault project. Para detalhes, veja Vaults de projeto.
Exemplos de uso com JSON:
# Listar valor de uma variável específica de um vault
mb envs list --json | jq '.[] | select(.vault == "default" and .key == "API_BASE") | .value'
# Listar todas as variáveis de um vault
mb envs list --json | jq '.[] | select(.vault == "staging")'
# Filtrar variáveis que são secrets
mb envs list --json | jq '.[] | select(.isSecret == true)'
# Listar apenas vaults disponíveis
mb envs list --json | jq '[.[].vault] | unique'
# Filtrar por tipo de armazenamento
mb envs list --json | jq '.[] | select(.storage == "keyring")'
# Contar variáveis por vault
mb envs list --json | jq 'group_by(.vault) | map({vault: .[0].vault, count: length})'
# Mostrar caminho do arquivo de uma variável
mb envs list --json | jq '.[] | select(.vault == "default" and .key == "API_KEY") | .path'
Formato JSON:
[
{
"vault": "default",
"key": "API_KEY",
"value": "***",
"isSecret": true,
"storage": "keyring",
"path": "~/.config/mb/.env.default.secrets"
},
{
"vault": "staging",
"key": "API_KEY",
"value": "***",
"isSecret": true,
"storage": "keyring",
"path": "~/.config/mb/.env.staging.secrets"
},
{
"vault": "default",
"key": "VERSION",
"value": "1.0.0",
"isSecret": false,
"storage": "local",
"path": "~/.config/mb/env.defaults"
}
]
Exemplos de uso com pipe:
# Buscar por nome de variável
mb envs list | grep API
# Contar variáveis
mb envs list | wc -l
# Filtrar por tipo de armazenamento
mb envs list | grep keyring
mb envs set
Define ou atualiza variáveis.
mb envs set API_KEY=xyz
mb envs set A=1 B=2 C=3 --vault staging
mb envs set DB_PASS=segredo --secret
mb envs set TOKEN=abc --secret-op
mb envs set A=1 B=2 C=3 --secret # múltiplas chaves de uma vez
Com --secret ou --secret-op, pode omitir o valor na linha de comandos: indique só a chave (sem =) e o MB pede o valor com gum input --password (um prompt por chave, em sequência), para o segredo não ir para o histórico da shell. Se gum não existir no PATH, usa-se leitura mascarada em /dev/tty. Em modo não interactivo (sem TTY), use sempre KEY=VALOR na linha de comandos.
Se usar KEY=VALOR com --secret / --secret-op, o MB emite um aviso (o valor na linha de comandos pode ficar no histórico da shell e em registos de processos); o fluxo recomendado continua a ser só a chave + prompt mascarado.
mb envs set API_KEY --secret # um prompt (gum --password)
mb envs set A B C --secret # três prompts em sequência
mb envs set TOKEN=abc --secret-op # sem prompt (valor já veio na linha)
| Flag | Descrição |
|---|---|
--vault <nome> | Grava em .env.<nome> em vez do padrão. Não aceita project nem prefixo project/ (reservados) |
--secret | Guarda no keyring do sistema (lista .secrets); chave sem = pede valor com gum input --password |
--secret-op | Guarda no 1Password (referência em *.opsecrets, requer op); chave sem = pede valor com gum input --password |
--yes | Confirma sem prompt para --secret-op (CI) |
--secrete--secret-opsão mutuamente exclusivos. Sem flags de store, a variávelMB_ENVS_SECRET_STORE(plain/keyring/op) no ambiente define o destino.
mb envs unset
Remove uma ou mais chaves.
mb envs unset API_KEY
mb envs unset A B C --vault staging
Se a chave não existir, exit code 0. Se não restar conteúdo num vault explícito, os ficheiros .env.<vault>, .secrets e .opsecrets são apagados. env.defaults nunca é removido.
mb envs vaults
Lista vaults disponíveis, caminho e número de variáveis.
mb envs vaults
mb envs vaults --json
Output: tabela VAULT / ARQUIVO / ENVS. Inclui default, vaults em disco .env.<nome> no diretório de configuração (ex.: ~/.config/mb/.env.staging no Linux), e linhas project / project/<nome> quando mbcli.yaml tem envs. O ficheiro .env.project é ignorado (nome reservado).
JSON: [{"vault","path","env_count"},...]
Integração com 1Password (--secret-op)
O MB guarda valores no 1Password via 1Password CLI (op no PATH). O valor fica no cofre; a referência op:// é gravada em *.opsecrets — não no keyring.
Requisitos
opinstalado e sessão ativa (op signin)--secrete--secret-opsão mutuamente exclusivos
Comportamento
O MB cria ou reutiliza um item do tipo senha com título mb-cli env / default ou mb-cli env / <vault> por vault lógico. A referência op:// fica em env.defaults.opsecrets ou .env.<vault>.opsecrets.
Na listagem com --show-secrets, referências op:// são resolvidas com op read. Se a sessão 1Password não estiver ativa, o comando falha com mensagem clara.
mb envs unset (com o mesmo --vault) remove a chave dos ficheiros, .secrets, *.opsecrets, keyring e item 1Password.
Ver também
- Variáveis de ambiente — Precedência, vaults de projeto, quando usar o quê
mb run— Executar programas com ambiente mesclado- Comandos de plugins — Como plugins herdam o ambiente