Las variables de entorno son útiles cuando necesitamos que cierta información prevalezca para poder trabajar más rápido o necesitamos guardar información para no tener que recordarla constantemente.
Variables de entorno en Linux
En linux hay varias variables de entorno que ya están preestablecidas, para verlas desde la consola es tan simple como usar el comando seguido de la variable de entorno.
Por cierto, todas las variables de entorno se mandan a llamar con un signo de peso por delante, de lo contrario se interpretará como un comando.
Variable
Contenido
HOME
Indica el home del usuario
PATH
Indica las direcciones de donde están los binarios que usa el sistema
BASH_VERSION
Indica la versión del bash que estás utilizando
SHELL
Dirección de la shell que estás utilizando
Hay muchas más, pero estas son las que te pueden interesar. Por cierto, por convención las variables de entorno se crean en mayúsculas.
¿Cómo crear tus propias variables de entorno?
En el home de tu usuario debe haber un archivo oculto llamado ".bashrc", lo puedes ver ejecutando el comando ls -la la opción -a es de all.
ls -la
Ábrelo utilizando el comando code .bashrc, si tienes instalado VS Code esto te mostrará el documento en el editor. Si estás en WSL y no te funciona, ve a la cmd, ejecuta el comando wsl y vuélvelo a intentar desde ahí.
Cuando lo abras ten cuidado con lo que tocas, podrías dañar la shell, pero desde ahí puedes crear una variable de entorno, por ejemplo, como yo estoy usando WSL, voy a crear una variable de entorno que me de la ruta de mi carpeta en Windows sin que tenga que escribir toda la ruta.
Ahora guardo el archivo, reinicio la terminal y ejecuto:
cd $WINDOWS
Pero se puede hacer mejor porque también puedo crear un alias que no se borre cuando cierre la terminal.
Ahora solo tengo que ejecutar cc para ir a mi carpeta en Windows sin necesidad de escribir la variable de entorno.
Ahora crea las variables o alias que necesites para ser más eficiente tu trabajo, por ejemplo, podrías crear un alias que ejecute VS Code y lo abra en la carpeta que requieres.
Contribución creada con los aportes de: Miguel Gonzalez.
La termina tiene una configuración con diferentes valores, que se pueden acceder con las variables de entorno. Estas son muy importantes para la configuración general del sistema 🚒.
Podemos guardar alias para que se queden de manera permanente con esto 😉.
ln -s <ruta> <Nombre> Esto para hacer link simbólicos, que son un tipo de archivo que hacen referencia a otro lugar, básicamente es un acceso directo desde terminal 📁.
printenv nos muestra todas las variables de entorno que tenemos configuradas 📔.
echo $<variables> esto nos sirve para imprimir una variable en particular.
Algunas variables son:
HOME es nuestro HOME de usuario 😆.
PATH tiene todas las rutas donde se encuentran los binarios en los que se ejecuta nuestro sistema. 🛣️ Hay varios manejadores de paquetes para binarios, pero no todas las veces se agregan a PATH, y se deben agregar a mano.
En HOME, existe un archivo que se llama .bashrc que es donde está nuestra configuración de Bash. Lo podemos abrir con VS Code para modificarlo. En este archivo podemos crear alias.
alias <nombre>="comando" para crear un alias útil 👀.
code <archivo> para abrir un archivo de texto en VS Code desde la terminal.
Para modificar o crear una variable de entorno, se hace, por ejemplo PLATZI_MESSAGE='Hola amigos".
Para agregar una ruta a la variable PATH ponemos en .bashrc PATH=$PATH:<ruta>, guardamos, cargamos bash en la terminal, y listo 😄.
Es muuuy importante tener cuidado con los alias, nunca hay que nombrar un alias como un comando ya existente 😟.
¡Me han ayudado muchísimo todos tus apuntes! Gracias
Muy buen aporte, gracias...!
☝ Las variables de entorno son muy útiles cuando quieres compartir un script que usa dichas variables de entorno. Por ejemplo, ¿alguna vez has usado variables de entorno en proyectos de NodeJS, PHP, Vue, React? Esas que se guardan en archivos .env, aquí en la terminal son muy similares, puedes tener tus propias variables de entorno, y puedes crear un script para la terminal que haga uso de ellas!
.
Claro, si solo nos enfocamos al uso exclusivo de la terminal podemos sacarle mucho provecho también, por ejemplo, podemos saber cuántas rutas tiene nuestra variable PATH:
echo $PATH
Esto por ejemplo, sirve para debuguear cuando algún comando no funcione, podemos mirar si la ruta de su archvio está dentro de PATH :D
Hay alguna manera de bloquear los archivos como poner una clave en caso de que otra persona use mi laptop y pueda cambiar la configuracion de estos archivos
Ya que si una persona usa nuestra laptop no necesita la contraseña al estar logueado con mi usuario o lo mas seguro seria crear un usuario para que lo usen las demas personas que quieran usar mi laptop
con lo visto hasta el momento cree un mensaje cada vez que se inicia la terminal o se llama al bash en su defecto jajaja
me encantó 🥰
Genial , gracias por el aporte.
🐱💻 Las variables de entorno permiten pasar información de forma simple, de una aplicación a otra.
Genial, gracias por el dato :)
Excelente resumen 😁👌👌
Un pequeño aporte:
30 prácticos alias para tu Bash
De todo y para todos... 😉😉😉
Super aporte
gracias!
Si de casualidad instalaron oh-my-zsh pueden abrir en VSC los archivos
code .bashrc.zshrc
y si entran en el archivo .bashrc y buscan los alias que hay alli y no les funcionan es porque deben copiarlos y ponerlos en el archivo .zshrc
para cambiar de shell ya que si instalan oh-my-zsh, bash sigue funcionando solo deben escribir en su consola
bash o zsh
para cambiar entre shells
Para recargar la shell de zsh es solo usar su nombre zsh por si usaron bash y se les cambio la shell
Hola Sebastian, yo estoy en mac y tengo instalado oh-my-zsh pero no he logrado ingresar a la carpeta .zshrc. Me dice que ese command not found. Me puedes ayudar por favor?
Un pequeño resumen
ln -s --> Nos permite a crear enlaces simbólicos que en simples palabras son accesos directos con un nombre descriptivo o fácil de aprender, esto nos ayuda a acceder a ubicaciones dentro de nuestro sistema sin tener que usar rutas absolutas, esta es su estructura básica:
ls -s ubicaciónAbsoluta nombreDescriptivo
printenv --> Nos imprime todas las variables de entorno configuradas en nuestro sistema.
Si deseamos el contenido de alguna variable de entorno utilizamos el comando echo $nombreVaraible
Si deseamos configurar nuestras variables de entorno debemos acceder al archivo oculto de nuestra Shell, para esto usaremos el comando ls -la y debemos encontrar uno de estos archivos (dependiendo tu SO):
Linux --> .bashrc
Mac --> .zshrc
Generalmente este archivo no está creado en Mac, para esto debemos crearlo, les dejo el siguiente vinculo en donde se habla de su creación (archivo zshrc)
Tras haber modificado o creado las variables de entorno, debemos guardar los cambios(dentro del editor de texto), luego debemos decirle a nuestra terminal que lea las variables de entorno y pueda actualizar (si es que existen cambios), para esto usamos el comando bash y listo, ya podemos usar nuestras variables de entorno, saludos a tod@s!!!
gracias man, este comentario debería estar mas arriba ejejeje ♥
Les comparto mis apuntes, espero que le sirva. :D
Nuestra shell o línea de comandos tiene una configuración, esta y diferentes valores del sistema se pueden acceder a través de las variables de entorno es super útil poder manejarlas. Hay variables de entornos primordiales incluso para la configuración del sistema, podemos tener variables de entorno para saber la ubicación del home, los binarios, etc.
Links simbólicos
Son un tipo de archivo que hacen referencia a un lugar, es como un acceso directo desde la terminal.
Lo podemos crear así:
$ ln -s [ruta][nombre del link simbólico]
s: Es de simbólico.
Ejemplo
lrwxrwxrwx 1 galeedgutierrez galeedgutierrez 12 Aug 420:19 documentosLink -> ./documentos
Aquí vemos que el link simbólico "docuementosLink" apunta a ./documentos.
También vemos que antes de los permisos vemos una l.
Permisos dummy
Todos los permisos que vemos son permisos dummy o permisos que no tienen valor. Los links simbólicos como tal no tienen permisos.
Variables de entorno
printenv
Este nos muestra todas las variables de entorno que tenemos configuradas
Imprimir variables de entorno
Podemos usar la siguiente sintaxis.
$ echo $[variable de entorno]
Variables que tenemos que conocer
$HOME
Es la ruta de nuestro home de nuestro usuario. Podemos usarla para ir al home.
$ cd$HOME
Esto es útil por si queremos configurar una ruta en específica que vayamos a usar en algún programa o script, etc.
$PATH
PATH tiene toda la ruta en donde se encuentran los binarios que ejecuta nuestro sistema.
Modificar/crear variables de entorno
Debemos buscar el archivo .bashrc en el home de nuestra terminal, este archivo es donde se mantienen la configuración del bash. En caso de ZSH lo vamos a encontrar en .zshrc.
Modificar
Podemos modificar estos archivos desde un editor de texto como ser VSCode o con los que ya vienen en la terminal como VIM o NANO.
Podemos modificar o crear usando alias.
aliasl='ls -lh'
Crear
MENSAJE_NUEVO="Mensaje"
A esto lo podemos invocar usando el comando echo, tal como $HOME o $PATH.
$ echo$MENSAJE_NUEVO
Manejadores de paquetes
Normalmente cuando estamos instalando nuevos binarios hay diferentes manejadores de paquetes, es el que se encarga de traer un repositorio e instalar algún binario dentro de la máquina, esto lo podemos hacer con el sistema de paquetes nativos en Linux es apt, etc.
Lo que hacen estos es traer un repositorio, instalar algún binario, pero no todas las veces las rutas donde están estos binarios hay que agregarlos a la variable PATH.
Agregar una nueva ruta de binarios a PATH
Una vez dentro de la terminal realizamos lo siguiente
PATH=$PATH:nuevaRutaDelBinario
Cuando ponemos $PATH quiere decir que use lo que ya tiene y con : le estamos diciendo que agregue la nueva ruta del binario..
Alias
Es importante que tengamos cuidado con los alias y como los asignamos, no hay que crear alias de comandos que ya existen.
$ aliascd='rm -rf'#Es muy peligroso
También les comparto apuntes del mismo curso pero del 2019.
Clase: Qué son y cómo se utilizan las variables de entorno
El hecho que podamos ejecutar comandos sin necesidad de colocar su ruta completa, esto es posible porque tenemos algo llamado variables de entorno.
Variable de entorno
Es una definición global a la que todos los procesos tienen acceso y específicamente el sistema operativo tiene acceso a esa variable para tomar más información sobre lo que está pasando a su alrededor.
$PATH
El $PATH o ruta en esta variable se almacena todas las rutas en la que el intérprete de comandos, la terminal, tiene que ir a buscar los archivos que pueden ser ejecutables.
Si usamos el comando:
$ echo$PATH
Podemos ver los lugares donde podemos encontrar los archivos ejecutables.
Todos los comandos que utilizamos tienen que estar definidos en la variable $PATH.
$: Es una forma de pedirle al intérprete de comandos que expanda el contenido de esa variable, esto sucede con todas las variables de entorno.
Todos los procesos tiene acceso a las variables de entorno, tanto para leerlas como para cambiarlas.
Asignación de las variables de entorno
Esto se puede hacer para un comando en particular o para toda la sesión.
Asignación global
Para asignarla para toda la sesión usamos el comando:
$ exportVAR=valor
Asignación particular
Podemos definir el valor solamente para el próximo comando que vamos a ejecutar, no es usual, pero lo podemos usar para sobreescribir una variable que ya teníamos definida y no queremos alterarla para todos los comandos sino para una ejecución en particular.
$ VAR=valor comando
VAR: El nombre de la variable.
valor: Es lo que queramos que exista.
Clase: Sistemas de manejo de paquetes
Instalar software
Para poder usar un software que no viene en nuestro sistema, lo que necesitamos es instalarlo para poder usarlo.
Una instalación implica descargar el programa por lo que tenemos que saber de donde sacarlo, cuando lo tengamos procedemos a realizar la descarga, después tenemos que copiar los archivos del programa a los lugares en los que sea necesario y por último hacer algunas configuraciones para que el programa pueda correr.
Paquetes de software
Son programas que se encargan de realizar todas las tareas por nosotros y se llaman paquetes de software.
Así como existen los paquetes también existen otros programas que son los administradores de paquetes, estos conocen de donde realizar la descarga que otros paquetes ya tenemos instalados y como configurara todo de tal manera que no genere conflictos, se encarga de resolver los problemas de dependencias.
Paquetes binarios
Según el sistema operativo vamos a poder usar diferentes manejadores de paquetes. Son archivos que ya son ejecutables.
apt
Se utiliza en distribuciones de Linux basadas en Debian.
install: Es uno de los comandos que tiene incorporado apt.
$ aptinstall nombreDelProgramaAInstalar
zypper
Se utiliza en las distribuciones de SUSE.
rpm
Es el comando universal, es un poco más rústico.
En caso de no poder instalar debemos usar sudo.
lynx
Es un navegador de internet desde la línea de comandos.
$ lynx paginaWeb
Paquetes de lenguajes
Son librerías escritas en el mismo lenguaje que vamos a utilizar.
Cada lenguaje propone su manejador de paquetes.
pip
Se usa con Python.
Para ejecutar archivos en Python necesitamos ciertas librerías como pandas.
$ sudo pip install pandas
composer
Es para PHP.
npm
Este es para NODE.JS.
Otros
Estos pretenden ser más genéricos con los que es posible instalar paquetes binarios o propios de un lenguaje.
conda
homebrew
Para usarlos hay que instalarlos primero.
Axel me podrías indicar por favor de que manera harías para guardar todas nuestras variables de entorno en un archivo de texto? Gracias
Excelente aporte 👍
Esta clase tiene la particularidad de que se siguen muchas procesos y el profesor da muchas instrucciones de muchas herramientas y codigos que podemos usar, pero en ningún momento se detiene a pensar en las personas que estan empezando a desarrollar su conocimiento y sus bases de programación por lo cual se hace muy dificil seguir la dinamica, ya que no se entiende que se esta haciendo, por que se esta haciendo y se pierde el hilo conductor
En mi caso, siento que estoy trabajando sobre algo vacío, no veo el sentido de utilizar un alias, si todavía no me se todos los comandos.
Muy cierto, inicié super motivada y entendiendo todo lo más bien, pero como de la clase 10 para adelante me perdí...
Por algún motivo al momento de ejecutar el comando code .bashrc en la terminal me sale esto.
Así que ingresé desde la terminal de Visual Studio code.
Para visualizar todos los alias que existen en nuestro sistema, basta con escribir alias en la terminal y nos mostrara todos los alias existentes.
Tambien es posible saber si un comando en especifico es un alias o no. Con el comando type podremos saber esto, por ejemplo, yo tengo un alias para neovim
$ typevimvim is an aliasfor nvim
Cuando el comando es un comando nativo o una función, type nos lo dira.
$ typegitgit is /usr/bin/git
$ type my_function
my_function is a shell function from /home/user/.zshrc
Para usuarios con WSL, hice un alias que permiten ingresar a https://platzi.com/home directamente, y da un pequeño saludo:
Hola, todos,
He estado buscando pero no logro encontrar el archivo ".zshrc". Estoy usando macOS y solo me aparecen los archivos ".bash_history", ".bash_sessions", ".zsh_sessions" y ".zsh_history". Y sí, estoy en mi carpeta "~".
¿Alguien puede ayudarme por favor? :(
Hola, después de instalar zsh no tienes el archivo zshrc?
Estoy igual que vos. :C
Hola a todos,para aquellos a los que el comando code . no les funciona en el WSL, les cuento que busqué en varios post de Google y en uno encontré lo que me funcionó y que fue la solución más fácil.
Abran una ventana de Windows PowerShell en modo administrador y ejecuten el comando wsl --update
Cuando termine la actualización del WSL (la cual puede demorar algunos minutos) ejecuten el comando en la ventana del PowerShell wsl --shutdown para que se apague la WSL y se apliquen los cambios.
Abran nuevamente la wsl y listo, ya el comando code . en la WSL les debería funcionar, bueno, al menos a mi me funcionó.
Saludos
gracias a me funciono
Funcionando a 2/12/2022 - Gracias
Link simbólicos:
Son acceso directo desde la terminal
Para usarlo escribimos: Ln -s dirección (nombre del atajo)
Se crea un documento especial (se puede observar con ls -l)
Ejemplo: ln -s Documents/Dev Desarrollo (para crear)
Definición de variable de entorno:
Las variables de entorno nos sirve para acceder a las configuraciones de tu terminal y del sistema.
Las variables de entorno hacen referencia a archivos, directorios y funciones comunes del sistema cuya ruta concreta puede variar, pero que otros programas necesitan poder conocer.
Se pueden configurar, manipular y crear.
Comando printenv
Lista todas las variables de entorno
Comando echo {contenido}
Imprime la información en contenido
En caso de variable de entorno: echo $variable
variable de entorno $HOME
Guarda la ruta del usuario
-echo $HOME // imprimir la ruta
-cd $HOME // ir a la ruta
variable de entorno $PATH
Guarda todas las direcciones de los binarios que ejecuta nuestro sistema.
Cuando ejecutamos node, usa esta variable para buscar el binario.
Esta variable es importante al instalar paquetes desde un gesto (como npm) pues muchas veces nos pedirá el paquete agregar la ruta del binario del paquete a la variable $PATH
.bashrc
Es el archivo donde se encuentra la configuración de nuestro bash.
Se puede modificar para modificar las variables de entorno.
De no existir debes crear lo junto al archivo .bash_profile
Para crear comandos tipo alias
alias l='ls -lh'
Para crear variables de entorno
MAXI_MESSAGE="HOLA MUNDA"
Para añadir nuevas rutas a la variable de entorno $PATH debemos concatenar la informacion previamente guardada con la nueva que queremos agregar:
PATH=$PATH:/home/user/bin
Muchas gracias, no me había quedado clara la utilidad del PATH
Gracias por este aporte!
La terminal tiene ciertas configuraciones, esta y diferentes valores del sistema se pueden acceder con variables de entorno. En ocasiones podremos crear alias pero esta vez serán de forma permanente.
Los links simbólicos hacen referencia a un lugar.
ln -s ruta nombreLink
De esta forma creamos un acceso directo a la ruta que escribimos con el nombre que mandamos como parámetro. En este caso ahora si escribimos
cd nombreLink
Este nos mandara a la ruta que le asignamos en el comando.
printenv
Este comando nos muestra todas las variables de entorno que existen en nuestro sistema operativo.
echo$nombre
Este comando nos muestra el valor de la variable que seleccionemos. Al igual que ya tengamos el nombre y su valor, podremos utilizarlo para algún programa o para usar comandos.
code .bashrc
Este comando nos abrirá visual studio code y nos abrirá el archivo .bashrc que es donde tenemos guardada todas nuestras variables de entorno y donde podemos modificarlas.
Si queremos crear una variable de entorno, necesitamos poner el nombre en mayúsculas y la sentencia que queramos entre " ".
Si queremos modificar una variable de entorno y concatenarla con su valor original, utilizamos
PATH=$PATH:/home/codevars/bin
NO HAGAS ALIAS DE COMANDOS EXISTENTES, ES PELIGROSO