3
Gracias

Unas palabras de agradecimiento nunca están de más.

Bash - La variable de entorno PATH

Queramos o no, en los sistemas GNU/Linux nos convertimos en los administradores de nuestro sistema. Cada vez vemos más la aparición de utilitarios gráficos que permiten ejecutar tareas de administración. Sin embargo, la línea de comandos (shell, terminal, consola, etc.) sigue siendo una herramienta muy poderosa y de fácil utilización.




Ventajas y desventajas de la línea de comandos

El empleo de la línea de comandos sigue siendo mucho más rápido que el uso del entorno gráfico, si se tiene en cuenta el tiempo de carga de la interfaz y la búsqueda con el ratón en el escritorio.

Utilizando el entorno gráfico no aprovechará el uso de la tecla tab para completar el comando, ni el historial que le permite repetir un comando, ni el uso de los alias para comandos largos, etc.

El inconveniente con el shell es que tendrá que utilizar las dos manos para escribir en el teclado. Con el ratón es posible hacerlo con una, pero sólo hasta el momento en el que debe rellenar las zonas propuestas por su querido utilitario gráfico.

En Linux tenemos acceso a la documentación de cada comando y a la exploración del sistema si utilizamos los comandos “man” e “info”. En internet podemos encontrar distintas traducciones de dichas páginas.

¿Qué es el shell?

Es un software que forma parte del sistema cuya función es tratar los comandos o líneas de comandos ingresadas desde el teclado.

Para ver la lista de shells disponibles en su sistema, consulte el archivo: /etc/shells

cat /etc/shells


En Linux, el usuario tiene por defecto un shell de conexión. Consulte el archivo /etc/passwd y verá que el último campo es algo como /bin/”<algomás>”. Pues este es su shell de conexión.

Para ver los shells de los usuarios se puede utilizar el comando:

cat /etc/passwd | cut -d: -f1,7


Y Para un usuario en particular se puede completar el comando de la siguiente manera:

cat /etc/passwd | cut -d: -f1,7 | grep usuario


Si está en modo gráfico puede abrir un terminal y enseguida escribir la línea de comandos.

En GNU/Linux disponemos de 6 consolas virtuales, cuyos accesos desde la interfaz gráfica se hacen con las combinaciones de teclas siguientes: Ctrl+ALT+Fn donde:
n es una cifra del 1 al 6.

Desde una consola virtual puede pasar a otra con la combinación: ALT+Fn, (con n del 1 al 6).

Para regresar al modo gráfico desde una consola virtual presione: ALT+F7.

En un shell se le solicitará ingresar un comando (prompt) del tipo:
usuario@debian: ~$

Si en lugar de $ ve un #, entonces está conectado como root (a menos, claro, que haya modificado su configuración).

La solicitud para ingresar un comando varía en función del sistema operativo y puede ser modificada gracias a otra variable de entorno: PS1.

Definición

Una variable es un contenedor de memoria que almacena un dato que podrá variar durante la ejecución de un programa. Esta tiene un nombre y un contenido.

La variable de la que vamos a hablar en este artículo se llama PATH y su contenido es una cadena que contiene rutas de directorios separadas por dos puntos:

Para mostrar el contenido de una variable en el shell debe escribir:

echo $variable


En el caso de la variable PATH debe escribir:

echo $PATH


¡IMPORTANTE! GNU/Linux diferencia las MAYÚSCULAS de las minúsculas.

Para una presentación más agradable puede utilizar el comando:

echo $PATH | tr : \\n


A continuación otras alternativas que permiten mostrar el contenido de PATH:

printenv PATH
env | grep -i PATH | cut -d= -f2
perl -e 'print $ENV{PATH},"\n"'
perl -e '$,="\n" and print split(":",$ENV{PATH}),""'
perl -e '($_=$ENV{PATH})=~s/:|$/\n/g and print'

Sección de análisis

Hemos visto que la variable PATH contiene una lista de directorios separados por dos puntos. Estos son los directorios en los que el shell busca el comando que el usuario escribe desde el teclado. La búsqueda no se realiza en el orden en el que están los directorios en la variable PATH:

Ejemplo:

carlos-vialfa@debian: ~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/carlos-vialfa/bin


Cuando se escribe un comando el shell buscará primero en /usr/local/bin, luego en /usr/bin, después en /usr/bin/X11, a continuación en /usr/games y finalmente en /home/carlos-vialfa/bin.

Desde el momento en que el shell encuentra el comando detiene la búsqueda y ejecuta el comando encontrado.

Podemos escribir un comando utilizando:

  • Su nombre .
  • La ruta absoluta (/bin/cat /etc/passwd ).
  • La ruta relativa (utilizando "." o ".." en general para los programas o scripts que no se encuentran en PATH).


Hay que tener en cuenta que:
  • . es el directorio actual
  • .. es el directorio padre


Al escribir un comando nos podemos encontrar con varias situaciones:
1. El comando es único y se encuentra en uno de los directorios.
2. El comando no es único y se encuentra en varios directorios.
3. El comando no se encuentra en ningún directorio.

En el primer caso no hay mucho problema. Si hay un error en el momento o de la ejecución probablemente debido a la sintaxis.

Solución: consultar el manual del comando con “man”.

En el segundo caso las cosas tampoco son complicadas. Supongamos que disponemos de un comando que se encuentra en /usr/bin y que hemos instalado desde las fuentes una versión más reciente del comando cuyo ejecutable se encuentra en /usr/local/bin.

Qué ocurre si llamamos al comando por su nombre: l shell mira el PATH comenzando por el primer directorio encontrado.

En nuestro caso encuentra el comando /usr/local/bin y este será el que se ejecutará:/usr/local/bin/prog .

En cambio, si deseamos de todas maneras ejecutar el comando prog (que se encuentra en /usr/bin) entonces tendremos que utilizar la ruta absoluta /usr/bin/prog.

El tercer caso comprende dos situaciones:

  • El comando existe pero no se encuentra en ningún directorio de nuestro PATH.

  • El comando no existe.



En los dos casos el mensaje de error será 'command not found' debido a que hay comandos que sólo root puede utilizar.

Solución<bold>: conectarse como root invocando <bold>su o su -. Para más información visite: Utilizar el comando su.

Hay comandos que se encuentran en un directorio que no se encuentra en la variable PATH.

Solución:

  • Utilizar la ruta absoluta<bold>.
  • <bold>Añadir el directorio a su variable PATH.


Si crea un script y no logra ejecutarlo independientemente de la ruta especificada, verifique los privilegios de ejecución en el script (ls -l script).

Si el comando no existe instale el programa en modo administrador.

Añadir un directorio a la variable PATH

  • Únicamente para la sesión activa:


Si desea añadir por ejemplo: /home/user/mes_prog a la variable PATH, escriba en el shell:

export PATH=$PATH:/home/user/mis_prog


para tener el directorio al final del PATH.

o:
export PATH=/home/user/mis_prog/:$PATH


para tener el directorio al inicio del PATH.

Ahora puede utilizar su programa escribiendo simplemente su nombre.

Al desconectarse, PATH retomará a su valor por defecto, entonces /home/user/mis_prog no existirá más en aquí.

  • De manera permanente:


Si desea configurar PATH de forma permanente debe editar el archivo de configuración de su shell de conexión.

Como por lo general el shell BASH es el más utilizado, debe editar su archivo: /home/user/.bashrc.

El comando:

echo 'export PATH=$PATH:/home/user/mis_prog' >> /home/user/.bashrc


Así a cada conexión su PATH contendrá su directorio: /home/user/prog.

Esta operación puede ser ejecutada por el usuario user<bold>.

Más información

La variable <bold>PATH se trata sólo de una variable entre las varias decenas que contiene el shell.

Puede mostrar las variables de entorno aún si desconoce sus nombres con los siguientes comandos:

printenv
env
set
export


Foto: © Everypixel
3
Gracias

Unas palabras de agradecimiento nunca están de más.

Haz una pregunta
Nuestros contenidos son redactados en colaboración con expertos del ámbito tecnológico bajo la dirección de Jean-François Pillou, fundador de CCM.net y director digital en el Grupo Figaro. CCM es un sitio de tecnología líder a nivel internacional y está disponible en 11 idiomas.

Consulta también

El documento « Bash - La variable de entorno PATH » se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.

0 Comentario