# Definir

Define una variable de entorno.

### Sintaxis

```
$ vela env set <key> [--public] -t <target>
```

```
$ vela env set STRIPE_SECRET_KEY -t production   # pregunta, sin eco
$ vela env set WHATSAPP_MODE --public -t preview # pregunta, con eco
$ vela env set VELASTACK_API_KEY -t all          # todos los servidores donde se despliega la aplicación
$ vela env set STRIPE_SECRET_KEY                 # primero pregunta por el entorno
```

El valor siempre se pide, nunca se toma como argumento, así que no puede acabar en el historial del shell. Un secreto se escribe sin eco; un valor público, con eco, de modo que el aviso te dice qué tipo estás definiendo. La clave tiene que ser un nombre válido de variable de entorno.

### Opciones

- `--public` - Legible de vuelta con [`vela env get`](/es/docs/env/get) y en [`vela env list`](/es/docs/env/list). Sin ella el valor es secreto: se escribe, nunca se lee. Las claves `PUBLIC_*` son públicas en cualquier caso, ya que SvelteKit las envía al navegador.
- `-t, --target <target>` - `local`, `all`, `preview`, `preview:<branch>`, `production` o un objetivo vinculado. Se pregunta si falta; obligatorio en CI.

Definir una clave de nuevo con o sin `--public` la mueve de un lado al otro.

### Qué pasa después

En un servidor la instancia se reinicia para que el valor surta efecto; `-t all` y `-t preview` reinician todas las instancias a las que llega la capa, en todos los servidores vinculados. Dos excepciones, ambas avisadas: una clave que la aplicación importa de `$env/static` queda fijada al compilar, así que el comando dice «vuelve a desplegar para aplicarla»; y las credenciales del superusuario de PocketBase esperan a un [`vela deploy`](/es/docs/deploy), que es lo que las reconcilia con la base de datos.

En local el valor se escribe en `.env`; reinicia [`vela dev`](/es/docs/dev) para que lo recoja.