Las primeras tomas de contacto con Linux son un poco confusas. Al principio, no sabes muy bien donde estás porque estamos acostumbrados a entornos gráficos. Contratas un servidor web, llegas a la terminal, pantalla en negro, ¿y ahora qué?
En la terminal, lo primero que vemos es una línea que empieza con lo que se llama el "prompt" donde nos indica sobre que usuario estamos, el nombre del host y el directorio actual
pedro@tallerdeapps:~$
pedro
es el nombre de usuario
tallerdeapps
es el nombre del host
~
en linux, la tilde de la ñ o virgulilla representa el directorio /home/usuario
Por supuesto, si cambias de usuario o directorio, el prompt se actualizará al nuevo estado.
En este tutorial veremos algunos de los comandos básicos desde la terminal y comentararemos brevemente que hay en el árbol de directorios.
La mayoría de Gnu/Linux siguen la norma FHS (del inglés, Filesystem Hierarchy Standard) para definir los directorios principales y sus contenidos. Aunque
no sea utilizado en todas las distros, conocer la FHS ayuda a entender las otras porque las diferencias no suelen ser muy grandes.
En Linux todos los archivos y directorios cuelgan del directorio raiz /
Este es el directorio raíz o principal. Podemos ver el contenido con ls /
Con pequeñas diferencias, la estructura más común suele ser parecida a esta:
/bin
Directorio de los binarios. Aquí se guardan los programas que emplea el sistema para labores administrativas
desde el ámbito del usuriocomo los comandos ls, cp, su, echo, mv, rm, su, tar, etc. /sbin
Parecido a /bin pero con binarios que solo puede gestionar el usuario root con tareas administrativas tales como el arranque,
restaurar el sistema, configuraciones de red, etc/boot:
Es el directorio de arranque, aquí va el kernel linux que se cargará durante el arranque y los archivos de configuración
del gestor de arranque/dev
Es un directorio muy especial con ficheros que representan la memoria, particiones, discos, dispositivos de hardware, etc.
En linux al contrario que en Windows todo son ficheros, las unidades son ficheros, las archivos y los directorios también son ficheros.
Cualquier volumen lógico de almacenamiento aparecerá aquí./usr:
Siglas de User System Resources. Almacena ficheros de solo lectura relativos a utilidades y paquetes instalados por el usuario.
Aquí encontrarás a Docker, PHP, etc. Dentro hay como una «réplica» del árbol de directorios como si de un segundo nivel se tratase.
Resulta curioso ver /usr/bin, /usr/lib, /usr/sbin, etc./etc
Almacena los archivos de configuración del sistema y de paquetes y programas instalados./lib
Contiene librerías del kernel y de los binarios del sistema de /bin y /sbin/proc
Directorio muy complejo. Por un lado presenta lista de directorios con los procesos activos numerados por su PID
y dentro información para la ejecución de los procesos. Por otro lado también contiene unos archivos que dan información del sistema como
memoria libre, uso de cpu,... Es de estos ficheros de donde extraen información algunas comandos de info del sistema con la ventaja de
que la presentan en pantalla más ordenada./media
Representa el punto de montaje de todos los volúmenes lógicos que se montan temporalmente, ya sean unidades externas USB,
otras particiones de disco, etc./mnt
Predecesor de /media. Se mantiene por razones históricas, suele estar vacío./home
El directorio de los usuarios normales. Al crear un usuario aparecerá en home una carpeta con su nombre propiedad de ese usario/root
La carpeta personal del superusuario/tmp
Carpeta temporal de archivos del sistema y aplicaciones,.../var
Guarda información variable de varios tipos: correos, paginas web, backups, bases de datos, logs del sistema y las aplicaciones instaladas./run
Contiene archivos relativos a procesos que se han ejecutado o que pueden estar en ejecución. En los sistemas actuales la carpeta /run
está reemplazando al directorio/var/run
que se empleaba en el pasado./opt
El sitio de las aplicaciones de terceros. Si instalamos algún antivirus, chrome o paquetes muy grandes se guardarán aquí.Existen cientos de distribuciones de Linux. Simplificando mucho podemos decir que hay tres grandes árboles genealógicos principales y muchos otros más pequeños. Tenemos a Debian, que sería el origen de Ubuntu, Red Hat Linux para Fedora y Slackware para Suse Linux.
Cada árbol tiene sus particularidades para descargar e instalar paquetes y otras cuestiones. Por eso es muy importante conocer sobre que sistema estamos. Desde la terminal tenemos muchas maneras de conocer el sistema.
En Ubuntu suele estar instalado el comando lsb_release
Con el parámetro -a mostrará toda la información posible.
pedro@tallerdeapps:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
Como este comando no es común para todos los Linux, un método que no suele fallar es leer unos archivos donde se encuentra la info del sistema. Estos archivos se
encuentran dentro del directorio /dir
y terminan con release
. En el caso de Uuntu se trata de os-release
y lsb-release
. Podemos usar el comodín *
para
mostrarlos todos a la vez.
cat /etc/*release
pedro@tallerdeapps:/etc$ cat *-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Una operación rutinaria a realizar en el servidor es comprobar si hay actualizaciones de los paquetes instalados. Un paquete es tanto un programa instalado como una parte o servicio del sistema. Las distribuciones de GNU/Linux tienen un sistema denominado gestor o administrador de paquetes que permite instalar aplicaciones (llamados paquetes en linux) directamente desde la línea de comandos, sin tener que acceder a una página concreta, descargar archivos o ejecutarlos. Todo ello se hace de manera automática mediante el mencionado gestor. En distribuciones basadas en Debian (como Ubuntu) se llama apt (Advanced Packaging Tool).
Para comprobar si hay paquetes actualizables entramos:
sudo apt update
Si la respuesta es que hay paquetes para actulizar lo haremos con:
sudo apt-get upgrade
Si queremos instalar un paquete se usa la forma:
sudo apt install nombre_paquete
Para eliminar un paquete tenemos dos comandos siendo el más completo el segundo porque elimina los archivos de configuración.
#Desinstala el paquete indicado del sistema.
apt remove nombre_paquete
#Desinstala el paquete indicado y elimina sus archivos de configuración.
apt purge nombre_paquete
Para movernos entre directorios tenemos el comando cd
(change directory)
cd / #va al directorio raiz
cd .. #sube un directorio
cd ../ ../ #subir dos directorios
cd /home #va al directorio home desde el directorio raiz.
cd #sin parámetro va al directorio home/usuario_actual
cd ~ #caracter virguililla alt+126. Va al directorio home/usuario_actual.
cd directorio1/directorio2 #desde la ubicación actual va al directorio2
Cuando tecleamos la primera letra de un directorio, con el asistente Intellisence de la terminal escribirá por nosotros el resto de caracteres al pulsar la tecla TAB. Ejemplo, queremos ir a un directorio llamado basesdedatos que se encuentra en la raiz. En la terminal entramos:
cd /ba + tecla TAB #al pulsar TAB aparecerá escrito basesdedatos
Para saber en que directorio estamos se usa el comando pwd
:
pedro@tallerdeapps:~$ pwd
/home/pedro
El comando para ver el contenido de los directorios es ls
Tiene muchos parámetros. El más usado por mi es ls -l
que muestra el contenido con los detalles de permisos de lectura/escritura/ejecución, el tamaño y la fecha de creación
pedro@tallerdeapps:~$ ls -l
total 28
drwxrwxr-x 2 pedro pedro 4096 Jan 7 12:54 apachedockerfile
-rw-r--r-- 1 root root 18617 Jan 3 16:00 get-docker.sh
drwxr-xr-x 3 pedro pedro 4096 Jan 7 20:05 nginxdockerfile
pedro@tallerdeapps:~$ ls
apachedockerfile get-docker.sh nginxdockerfile
Los comandos de linux muchas veces tienen gran cantidad de parámetros opcionales. Para obtener una ayuda rápida de muchos de
ellos se usa man
seguido del comando del que queremos obtener ayuda. Si pruebas en la terminal por ejemplo:
pedro@tallerdeapps:~$ man ls
Esto mostrará en pantalla un largo documento de texto con todas las opciones que soporta ls
Incluso podemos hacer man man
para consultar el manual de opciones de man.
Los manuales se encuentran en el el directorio /usr/share/man/man1/
. Si tenemos curiosidad por localizar un
manual en concreto usaremos man -w
seguido del comando que buscamos.
pedro@tallerdeapps:~$ man -w ls
/usr/share/man/man1/ls.1.gz
El comando tree
muestra los directorios en forma de árbol. Aunque no suele venir por defecto está disponible en los repositorios oficiales.
Para instalarlo en Ubuntu/Debian:
sudo apt install tree
tree # Sin parámetros. Muestra ficheros y directorios sin límite de profundidad
tree -L número # muestra ficheros y directorios hasta la profundidad indicada por número
tree -d # solo directorios
tree -a # directorios y todos los archivos incluyendo ocultos
Hay muchas más opciones. Para saber mas puedes encontrar ayuda con man tree
o en la documentación oficial.
Como ejemplo vamos a mirar el directorio raiz /
de un VPS Ubuntu hasta la profundidad 1.
[root@tallerdeapps /]# cd /
[root@tallerdeapps /]# tree -L 1
.
|-- bin
|-- boot
|-- dev
|-- etc
|-- home
|-- lib
|-- lib64
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- srv
|-- sys
|-- tmp
|-- usermin-setup.out
|-- usr
|-- var
`-- webmin-setup.out
20 directories, 2 files
Comando clásico para la impresión de texto por pantalla. En Linux se utiliza para la creación de scripts y como atajo para crear archivos de texto. Algunos ejemplos:
pedro@tallerdeapps:~$ echo "hola mundo"
hola mundo
pedro@tallerdeapps:~$ echo -e "hola\n\tmundo" # con el parámetro -e reconoce caracteres de escape como saltos de línea, tabulador, salto de página,...
hola
mundo
pedro@tallerdeapps:~$ echo "hola" > texto.txt #crea archivo con el texto hola
pedro@tallerdeapps:~$ echo "mundo" >> texto.txt #añade mundo al final del texto del archivo ya existente texto.txt
El comando cat es muy utilizado y de uso polivalente. Su nombre viene de concatenar. Lo podemos usar para ver archivos de texto,
concatenar archivos o crear nuevos redirigiendo la salida con >
de la misma forma que hemos visto con echo
cat texto.txt #muestra en pantalla el contenido del archivo
Vamos a crear unos archivos con texto con el comando echo que ya conocemos, los vamos a concatenar en otro archivo y por último, comprabar que todo ha salido bien.
pedro@tallerdeapps:~$ echo "abcde" > fichero1.txt
pedro@tallerdeapps:~$ echo "xyz" > fichero2.txt
pedro@tallerdeapps:~$ cat fichero1.txt fichero2.txt > destino.txt #concatenación de archivos en un tercero
pedro@tallerdeapps:~$ cat destino.txt #mostrar en pantalla el archivo concatenado
abcde
xyz
rmdir
Para la creación de directorios se usa mkdir
mkdir nombre_directorio #Crea un directorio con ese nombre
Para borrar directorio se usa el comando rmdir. Es necesario que esté vacío para poder eliminarlo o dará un error.
rmdir nombre_directorio #Borra el directorio
Con el comando rm
se pueden borrar archivos y carpetas.
rm nombre_archivo #Borra el archivo
rm nombre_archivo1 nombre_archivo2 #Borrado de múltiples archivos
Para el borrado de directorios tenemos la ventaja con respecto al comando rmdir
de poder borrar directorios
no vacíos. Para borrar un directorio con contenido usaremos los parámetros -rf
La r es de recursivo y la f de
forzar.
rm -rf carpeta #Borra el directorio y todo su contenido
El comando mv
de move, como su nombre indica mueve archivos de un directorio a otro. Un segundo uso es el de
renombrar archivos y directorios.
mv archivo.txt carpeta1 #mueve el archivo.txt del directorio actual al subdirectorio carpeta1
mv archivo.txt / #mueve el archivo.txt del directorio actual al directorio principal /
mv /archivo.txt . #mueve el archivo del directorio raiz al directorio photo_size_select_actual
mv archivo.txt imagen.jpg #renombra achivo como imagen.jpg
Copiar archivos tiene una sintaxis parecida al comando de mover. Incluso también renombra.
mv archivo.txt carpeta1 #mueve el archivo.txt del directorio actual al subdirectorio carpeta1
cp archivo.txt / #copia el archivo.txt del directorio actual al directorio principal /
cp /archivo.txt . #copia el archivo del directorio raiz al directorio photo_size_select_actual
cp archivo.txt imagen.jpg #copia el achivo con el nuevo nombre imagen.jpg
En muchos comandos que tengan que ver con tratamiento de ficheros como ls, cp, mv, rm ,... podemos ayudarnos del comodín * para seleccionar múltiples archivos.
ls pic* #para listar todos los archivos que empiecen por pic
rm *.pdf #borra todos los archivos con extensión .pdf
El editor de texto de los orígenes del linux es vi
. Aunque tiene muchos seguidores, la verdad es que es confuso usarlo y requiere tener la
documentación completa. No es nada de mi gusto. Por suerte, hay más opciones y también tenemos a nano
, otro editor muy sencillo que suele
venir con linux. Para mi gusto, mucho mas agradecido de usar. Para abrir o crear un archivo de texto usaremos:
nano archivo.txt
Si el fichero existe lo abrirá y podremos verlo y editarlo. Si no existe, tendremos la opción de crear y guardar los textos introducidos
Abajo tenemos una ayuda que nos recuerda cuales son los atajos de teclado para salir, buscar, etc pulsado ctrl + la letra indicada
Para ver textos, además de poder usar cat
o algún editor tenemos algunos comandos más específicos para esa tarea. Los comandos more
o less
son útiles para mostrar textos largos que no caben enteros en la pantalla ya que por medio de teclas podemos movernos por el texto.
Con el comando more
mostrará el texto dividido por páginas. Cada página contendrá todo lo que quepa en una pantalla. Para azanzar página
pulsamos tecla espacio
, para retroceder tecla b
, para avanzar una línea tecla intro
, para cerrar el texto se usa la tecla q
Existen más posibilidades,
consulta la documentación oficial para mas información.
pedro@tallerdeapps:~$ more /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:pedro,usuario2
audio:x:29:
dip:x:30:
--More--(26%)
El comando less
es parecido. Para movernos por el texto tenemos los cursores. Tiene en común con more
el uso de las teclas
espacio
para avanzar página, b
retroceder página y la tecla q
para salir. Hay más posibilidades, consulta
la documentación oficial.
En ocasiones, puede interesar borrar la pantalla de la terminal. Tenemos un comando para ello:
clear
Al listar archivos con con ls -l
nos aparecen junto con los ficheros detalles de información
drwxrwxr-x 2 pedro pedro 4096 Jan 19 07:53 micarpeta
drwxr-xr-x 2 root root 4096 Jan 19 07:54 directorioderoot
-rw-r--r-- 1 root root 0 Jan 19 07:53 otrotexto.txt
-rw-rw-r-- 1 pedro pedro 0 Jan 19 07:52 texto1.txt
En la primera columna se codifica con letras y guiones el tipo de archivo y los permisos de acceso. En el caso de los directorios, el primer caracter será la letra d. Los archivos de texto listados aquí pertenecen al tipo de ficheros regulares y se representan con un guión. Los posibles tipos de ficheros son:
-
para archivos regularesb
archivo especial tipo bloquec
para archivos especiales tipo carácterd
en el caso de directoriosl
esto es para enlaces simbólicosn
archivos de redp
para los tipos de archivos especiales tipo pipe
s
esto es para archivos tipo socketLos siguientes caracteres son tres grupos de 3 que representan los permisos de lectura "r", escritura "w", ejecución "x" para el propietario,
el grupo propietario y otros usuarios que no son ni propietario ni grupo propietario. Las combinaciones posibles van de rwx
todos
los permisos a ninguno representado por ---
En el ejemplo del directorio micarpeta
tenemos rwx tanto para el propietario como el grupo al que pertenece. Los usuarios no propietarios
o de un grupo diferente en este caso no tienen permisos de escritura.
Las dos siguientes columnas muestran el propietario y el grupo al que pertenece. En este ejemplo sale propietario root, del grupo root para algunos ficheros y usuario pedro del grupo pedro para otros. En un próximo capítulo, veremos con mas detalle los usuarios y grupos. Por el momento nos centramos en los permisos.
Ahora que ya conocemos un poco que permisos tiene un fichero vamos a practicar para cambiárselos con el comando chmod
El mismo comando permite dos modos diferentes para hacerlo. Está el método octal o numérico o el método simbólico. Puedes usar el
que mas te guste.
La estructura básica sería chmod permisos nombre_archivo
Permisos son 3 números del 0 al 7, uno para cada tipo de usuario. El valor de cada dígito lo podemos encontrar en esta tabla:
Algunos ejemplos comunes:
chmod 777 texto1.txt #asigna permisos rwxrwxrwx
chmod 744 texto1.txt #asigna permisos rwxr--r--
Podemos usar el * para cambiar permisos a todos los archivos del directorio y el parámetro -R de recursivo
chmod 777 * #asigna permisos rwxrwxrwx a todo el directorio
chmod 744 t* #asigna permisos rwxr--r-- a todos los ficheros que empiecen por t
chmod 744 * #asigna permisos rwxr--r-- a todos los ficheros de este directorio y los subdirectorios que estén por debajo
El método simbólico es una combinación de letras y símbolos para cambiar los permisos. Empieza por una letra que representa:
A continuación un operador:
finalmente, los permisos rwx:
Con ejemplos lo entenderemos mejor:
chmod u=rwx,g= , o= texto1.txt #permisos rwx para usuario, los demás los deja igual
chmod u=rw,g=rw,o=rw texto1.txt #permisos rw para los 3 tipos de usuarios
Con los operadores + -
agregamos o quitamos un permiso dejando por tipo de usuario. El resto de usuarios
no se verán afectados.
chmod u+rwx texto1.txt #añade los permisos rwx al usuario propietario
El comando chown
permite cambiar de propietario y grupo a los archivos. Podemos cambiar en la sentencia uno de los dos o ambos.
La sintaxis se puede hacer con .
o con :
Lo mejor es mirar los ejemplos que te muestro.
chown root mifichero #ahora el usuario root es propietario de este archivo
chwon :usuarios mifichero #mifichero pertenece al grupo "usuarios". No cambia de usuario, solo grupo
chwon .usuarios mifichero #lo mismo pero usando .
chown root:root mifichero #se cambia usuario y grupo
chown root.root mifichero #lo mismo pero usando .
Para buscar ficheros tenemos a find
. Podemos usar *
como comodín. Algunos ejemplos:
find /micarpeta -name “arch*” #Busca en el directorio micarpeta ficheros que empiecen por arch
find /micarpeta -type f -name “arch*” #Busqueda de archivos tipo file, se omite la busqueda de carpetas
find /etc -name “*.conf” #Busca en el directorio etc ficheros con extensión .conf
find / -name “docu*” #Busca en todos los directorios archivos que empiecen por docu.
echo "hola mundo"
que será ejecutado cuando invoquemos el archivo. Para empezar desde el directorio personal de tu usario creamos un directorio llamado "programas":
cd ~ #ir al directorio home/mi_usuario. En mi caso home/pedro
pwd #compruebo en que directorio estoy
home/pedro
mkdir programas #crea el directorio
cd programas #ir a ese directorio
nano dimehola #crear un archivo con nano, sirve cualquier editor
Dentro del archivo dimehola escribiremos el script y guardamos cambios
Para ejecutar un script se usa ./ seguido del nombre del script. Si lo hacemos, no funcionará todavía porque el archivo
no tiene permisos de ejecución para nadie. Se trata de una medida de seguridad de linux. Podemos comprobar los permisos
tal como sabemos con ls -l
y mostrará -rw-rw-r--
Tal como vimos con chmod, le damos permisos totales
para todos los usuarios y ahora ya podemos ejecutarlo.
chmod 777 dimehola #permisos rwx para los 3 tipos
./dimehola #ejecutar script
Hola Linux #salida por la terminal
Ya sabemos como crear un programa. Muy sencillo pero no deja ser un programa. Ahora nuestro siguiente reto es poder invocarlo desde cualquier directorio como ocurre con muchos comandos programas y comandos del sistema. Para esto necesitamos conocer un poco las variables de entorno
El sistema Linux establece algunas variables de entorno globales cuando inicias sesión en tu sistema. Las variables de entorno son una
lista de valores que guardan varios estados de una sesión. Se pueden crear, borrar o editar. Para ver la lista de variables de entorno
podemos usar printenv
La lista es bastante grande, pero podemos resumir que los más importantes son los siguientes:
SHELL
: Describe el shell que interpretará cualquier comando que ingrese. En la mayoría de los casos, será bash de forma predeterminada, pero se pueden establecer otros valores si prefiere otras opciones.TERM
: Especifica el tipo de terminal a emular cuando se ejecuta el shell. Se pueden emular diferentes terminales de hardware para diferentes requisitos de funcionamiento. Sin embargo, generalmente no tendrá que preocuparse por esto.USER
: El usuario que inició sesión actualmente.PWD
: El directorio actual de trabajo.OLDPWD
: El directorio anterior de trabajo. Esto se mantiene en el shell para volver a su directorio anterior ejecutando cd -
.LS_COLORS
: Define los códigos de color que se utilizan para añadir de forma opcional un resultado de color al comando ls
. Esto se utiliza para distinguir diferentes tipos de archivos y proporcionar más información al usuario de forma rápida.MAIL
: La ruta al buzón del usuario actual.PATH
: Una lista de directorios que el sistema comprobará cuando busque comandos. Cuando un usuario escriba un comando, el sistema comprobará los directorios en este orden para buscar y ejecutar el ejecutable.LANG
: Las configuraciones actuales de idioma y localización, incluida la codificación de caracteres.HOME
: El directorio principal del usuario actual._
: El comando más reciente ejecutado anteriormente.Si queremos ver el valor de una variable concreta usaremos printenv NOMBRE_VARIABLE
pedro@tallerdeapps:/$ printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
En la variable PATH están todas las rutas donde el sistema buscará un ejecutable. Sabiendo esto, si tenemos un programa que queremos que pueda ser
invocado desde cualquier directorio, como seguro habrás intuido, debemos añadir a PATH la ruta donde está ese programa. Para añadir
valores a una variable se usa export
. Vamos a practicarlo aprovechando el ejercio anterior donde creamos un miniprograma en /home/mi_usuario/programas. Nuestro
primer pensamiento sería hacer export PATH=$PATH:/home/mi_usuario/programas
export PATH=$PATH:/home/pedro/programas #agrego a PATH esta ruta
cd / #ir al directorio raiz para comprobar que desde allí tengo alcance a /home/pedro/programas
dimehola #invocar el script
Hola Linux #funciona!
Esto funcionará mientras no se reinicie o cerremos sesión. Para que sea permanente, necesitamos modificar PATH en el
archivo donde se almacena, en /etc/environment
. Con nuestro editor
favorito con permisos sudo, añadimos :/home/pedro/programas
al final de la línea y grabamos.
Hay que reiniciar para que los cambios surjan efecto.
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/pedro/programas"