Una buena práctica es no dejar secretos, como contraseñas o Tokens, dentro del código. Y ni mencionar el peligro que conlleva subirlo a un repositorio. En gran medida se hace hincapié en esta omisión de variables por no dejar expuesto al resto del equipo un contenido sensible. Además otorga la posibilidad de jugar con diferentes credenciales durante el desarrollo, algunas pueden ser solo para hacer pruebas y otras las que serán usadas en el proyecto final.
Muchos Frameworks ya incorporan un sistema similar al que vamos a mencionar. En breve descubrirás que la técnica es tan sencilla que puedes montártelo por tu cuenta.
Primero crea un archivo plano con el siguiente contenido. Yo lo llamaré: .env
TOKEN=123456789
USER=TUX
PASSWORD=qwe123
Son 3 futuras variables de entorno con sus valores.
A continuación ejecuta el siguiente comando en el terminal, en la misma carpeta donde se encuentra el fichero. Convertirá cada línea del fichero en una variable de entorno.
Si usas Bash
export $(cat .env | egrep -v "(^#.*|^$)" | xargs)
Si usas Fish
for i in (cat .env)
if test (echo $i | sed -E 's/^[[:space:]]*(.).+$/\\1/g') != "#"
set arr (echo $i |tr = \n)
if test $arr[1] != ""
set -gx $arr[1] $arr[2]
end
end
end
Si quieres comprobar que se ha ejecutado correctamente puedes hacer un echo
con cualquier variable añadiendo el prefijo $
.
echo $TOKEN
123456789
Tarea terminada. Recuerda que si cierras el terminal o modificas el archivo, debes volver a ejecutar el comando.
Leer variables de entorno en PHP
$token = getenv('TOKEN');
$user = getenv('USER');
$password = getenv('PASSWORD');
echo $token;
// 123456789
Leer variables de entorno en Python
import os
token = os.getenv('TOKEN')
user = os.getenv('USER')
password = os.getenv('PASSWORD')
Leer variables de entorno en Clojure
(def token (System/getenv "TOKEN"))
(def user (System/getenv "USER"))
(def password (System/getenv "PASSWORD"))
Aunque también puedes usar la dependencia environ
.
Añade en project.clj
.
[environ "0.5.0"]
Y usa con total libertad.
(require [environ.core :refer [env]])
(def token (env :TOKEN))
(def user (env :USER))
(def password (env :PASSWORD))
{{ comments.length }} comentarios