Las variables de entorno son un conjunto de variables globales en nuestros sistemas que nos permiten acceder de forma más fácil a una ruta o un conjunto de comandos difíciles de recordar. Podemos usarlas en la terminal y en los archivos de bash.
El comando env nos permite ver todas las variables de entorno de nuestro sistema.
++RESUMEN DE LA CLASE++
|
++Las variables y su entorno de ejecución++
|
|
++Comandos++
|
env: Muestra las variables del sistema operativo
|
|
++Variables de entorno++
|
$PATH: Guarda las rutas donde se ubican los archivos binarios que pueden ejecutarse directamente en la consola
|
|
++Scripts útiles++
|
Verificar la cantidad de espacio en el S.O
#!/bin/bash# Verificar la cantidad de espacio en el S.O# Desarrollado por Jhon EdisonCWD=$(pwd)FECHA=$(date +"%F%T")echo$FECHAdf -h |grep /dev > uso_disco_"$FECHA".txt
df -h |grep /dev/sda2 >> uso_disco_"$FECHA".txt
echo"Se ha generado un archivo en la ubicación $CWD"
gracias
gracias
do||!do
Algunos entenderán jajaj
Hola
Pienso que eso significa que hará lo opuesto a lo que hace do. ¿Es correcto?
Hace o no Hace!
Importante crear el script sin dejar espacios entre el nombre de la variable y el igual, me genero problemas al correr el script. También tener en cuenta en el formato de fecha el signo "+" debe estar pegado al formato "%F%T" también genera problemas si se dejan espacios
Algo curioso es que las variables creadas mueren al finalizar la ejecución del script
Entendido y funcionando.
env
pwd
echo $PATH#!/bin/bash
# Verificar la cantidad de espacio
CWD=$(pwd)FECHA=$(date +""%F%T"")echo $FECHAdf -h | grep /dev > uso_disco_""$FECHA"".txtdf -h | grep /dev/sda2 >> uso_disco_""$FECHA"".txtecho ""Se ha generado un archivo con nombre uso_disco$FECHA.txt en la ubicacion $CWD"
Esta clase de programación se siente como una bocanada de aire fresco después de todas las clases anteriores
pwd => print working directory
df -h => disk free -h (human)
De acuerdo a lo que investigué por curiosidad, el hecho de usar $([comando]) generará una subshell. El resultado puede almacenarse en una variable o desplegarse de inmediato en la salida, dependiendo de las necesidades. Así se crea un proceso aparte del que ya corre con el script. Por ejemplo:
#!/bin/bash# Esta variable es global, o sea que se puede usar en todo el script
VAR="variable global"function bash {echo $VAR# Esta variable es local, o sea que sólo se puede usar dentro de esta función
local LOC="variable local"echo $LOC}#Esto no imprimirá nada, ya que la variable no existe fuera de la función
echo $LOC#Imprimirá"variable global"echo $VAR#Correrá la función definida y por ende imprimirá "variable global" y "variable local"bash
echo "Dormir durante 15 segundos"$(sleep 15s)
Ahora bien, cuando corremos el script de esta forma, podremos ver que hay un árbol de procesos. Usé el comando ps auxf
Lo interesante es cuando modificamos la última línea de la siguiente forma:
echo "Dormir durante 15 segundos"sleep 15s
El resultado, en texto, es el mismo. En ejecución, la cosa es muy distinta, ya que de la primera forma en cuanto llega a la última línea, no se imprime "Dormir durante 15 segundos" sino hasta después de 15 segundos. En la segunda se imprime inmediatamente el mensaje y después ejecuta el sleep. Porque están en distintas líneas, claro. Lo interesante es: ¿por qué cuando hay un comando y una subshell que requiere un tiempo de procesamiento la subshell se antepone a la primera salida?
Por curioso cambié las últimas líneas a
echo "Dormir durante 15 segundos"$(echo "Esto va segundo")
y se desplegó en el orden debido, o sea "Dormir durante 15 segundos Esto va segundo".
Opiniones?
Creo que tiene que ver con lo que dice el profesor en la siguiente clase: los procesos se corren de forma asíncrona.
No es por nada, el contenido de este curso me parece bueno e interesante, muy interesante.
Pero no me gusta la manera en cómo se desenvuelve el Prof. Siento que conoce el tema pero no se sabe explicar, habla como si lo tuvieran agarrado del cuello, como si le faltara el aire, dice los comandos y las palabras por sepa-ra-dos (así tal cual) y eso a la hora de practicar es incómodo xq uno está ansioso por escribir, por aprender, por ver que pasa y prefiere mil veces retroceder el video 10 segundos a esperar que, el, Prof, termine, de, decir, el, comando, y/o parámetro.
aca aca aca..... aca..... aca...... aca.....
Esto de "configurar un servicio de correo el cual tome este archivo y se lo envié al administrador o que genere alertas especificas basada en la configuración que recolecte." Con lo que voy de curso no lo puedo hacer no lo se hacer o si? ya tome el curso de terminal, hay algún otro curso que se puede hacer esto ?
¿Cómo se puede setar una variable de entorno para que esté disponible al inicio del sistema sin importar el shell que use? Básicamente lo quiero usar para definir puertos en servicios de systemd.
Te recomiendo definir las variables de entorno en el archivo /etc/environment
@jmadrigal Si lo intenté pero nada de naaaa :C. Lo estoy intentando en un contenedor de LXC.
Minuto 2:36
¿Desde cuándo y dónde, hay espacio de memoria, en el sistema operativo?
Me imagino que se refiere a las particiones, por ejemplo si tienes 2 SO en la misma maquina, le asignas cierto almacenamiento a cada sistema Operativo (con linux aveces se crea mas de una partición pero eso ya es tema aparte XD), en resumen el espacio que le asignastes a la particion windows es para el uso de ese sistema en especifico
¿Bash cuenta como lenguaje de alto nivel?
bash es tanto una interfaz de linea de comandos, como un lenguaje de scripting.
Si tomamos la pregunta como una interfaz de linea de comandos, entonces un lenaguaje de alto nivel que puedes usar es python.
Creo que el título de la clase no es el más adecuado...
Interesante el tema del uso de bash
Cabe aclarar la diferencia entre las variables de entorno y variables de shell. Como dijimos, las variables de entorno son accesibles por cualquier parte del sistema. Por otro lado, las variables de shell únicamente pueden ser interpretadas por la propia shell, es decir, los procesos hijos no podrán acceder a estas variables.
El comando set nos permite ver todas las variables de shell definidas.