Flux rss

[Bash] La variable de entorno PATH

Publicado por Carlos-vialfa, última actualización el martes, 12 de agosto de 2008, 18:54:29 por Carlos-vialfa

La variable de entorno PATH


I. Preámbulo


En los sistemas GNU/Linux queramos o no, nos convertimos en los administradores de nuestro sistema. Cada vez más vemos en entornos GNU/Linux la aparición de utilitarios gráficos que permiten ejecutar tareas de administración.

Sin embargo la oscura línea de comandos conocida bajo diferentes apelaciones (shell, terminal, consola, etc.) sigue siendo un utilitario muy poderoso y de fácil utilización.

Una vez que haya aprendido los conceptos básicos; se sorprenderá de lo sencillo que es usar la línea de comandos.

<paréntesis>
El empleo de la línea de comandos sigue siendo mucho más rápido que el uso de un utilitario gráfico. Si toma en cuenta el tiempo de carga de la interfaz, la búsqueda (física) con el ratón en el escritorio, sin contar el hecho de que generalmente debe ingresar datos por el teclado, privándose así de algunas ventajas que le ofrece la "línea de comandos", por ejemplo no aprovechará ni de tecla tab para completar el comando, ni del historial que le permite repetir un comando, ni del uso de los alias para comandos largos, etc.

El inconveniente con el shell es que no podrá agarrar su taza de café o cigarrillo con una mano mientras la otra esté ingresando datos por el teclado.
Con el ratón es posible, hasta el momento en que deba rellenar las zonas propuestas por su querido utilitario gráfico.

Pero quizás con el shell deje de fumar...
¡El shell es más barato que Niquitin!

Pero usted sigue en un entorno GNU/Linux y su decisión es respetable.
</paréntesis>

Como la libertad tiene un precio, pues, hay que pagarla.
En el caso de los sistemas GNU/Linux el precio a pagar es la libertad de leer la documentación disponible en su sistema, vea las páginas "man" y el comando "info", para que explote mejor su sistema.

También puede ver a las páginas "man" con el navegador Konqueror utilizando el URL man:/
En Internet se encuentran traducciones en español de las páginas "man".
http://ditec.um.es/~piernas/manpages-es/descarga.html
http://www.gentoo.org/doc/es/man-guide.xml
http://es.tldp.org/Paginas-manual/man-pages-es-1.28/

II. ¿Qué es el shell?


Es un software, el cual es 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

Un usuario bajo linux 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>. 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

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 (xterm,gterm,konsole,...) 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 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.

III. Definición


Comencemos primero con el término genérico de variable.

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

Una variable tiene un nombre y un contenido. No entraremos en el detalle de la programación para explicar el tipo de variable y su contenido.

Por el instante nos contentaremos con saber que la variable de la que hablamos se llama PATH y que 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 MAJUSCULAS de las minúsculas.

Para una presentación más agradable puede utilizar el comando
echo $PATH | tr : \\n

Aquí otras maneras para mostrar el contenido de PATH (a título informativo, sólo para hacerle ver que casi siempre existen varias alternativas para llegar al objetivo...).
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'

Por supuesto que la más corta es preferible.

IV. 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 uno escribe desde el teclado.
La búsqueda no se hace en el orden en 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, luego en /usr/bin/X11, luego 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)

. es el directorio actual
.. es el directorio padre

Al escribir un comando podemos encontrarnos 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

1. En el primer caso no hay mucho problema.
Si hay un error al momento de la ejecución probablemente sea a causa de la sintaxis.
Solución: consultar el manual del comando

2. En el segundo caso las cosas tampoco son tan 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.

Si llamamos al comando por su nombre ¿qué pasará?

El shell mira el PATH comenzando por el primer directorio encontrado.
En nuestro caso encuentra el comando /usr/local/bin entonces éste será /usr/local/bin/prog el que se ejecutará.

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

3. El 3er caso comprende 2 situaciones

- el comando existe pero no se encuentra en ningún directorio de nuestro PATH
- el comando no existe

En los 2 casos el mensaje de error será 'command not found'

Pero la interpretación no será la misma.

Hay comandos que sólo root puede utilizar.
Solución: conéctese con root invocando su o su -
linux 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
- añadir el directorio a su variable PATH

¿Creó un script y no logra ejecutarlo cualquiera sea la ruta especificada?

Solución: - verifique los privilegios de ejecución en el script (ls -l script )

El comando no existe, en este caso supongo que sabe lo que hay que hacer. Si no lo sabe, aquí la solución.
Pida al administrador que instale el programa.

Se puede buscar la existencia de un comando utilizando whereis o which
whereis comando
which -a comando

En el caso de which la opción -a nos permite ver todas las rutas correspondientes.
Sin la opción -a sólo el 1er directorio que contiene el comando será mostrado, lo que no querremos si el comando se encuentra en varios directorios.

V. Añadir un directorio a la variable PATH


-solamente para la sesión activa

Si desea añadir por ejemplo /home/user/mes_prog a la variable PATH, en el shell escriba
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á su valor por defecto, entonces /home/user/mis_prog no existirá más en PATH.

- 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.

Para esto utilizará un editor de texto o simplemente un comando para facilitarse la tarea.
Y si, generalmente la utilización de la línea de comandos hace las cosas bastante más fáciles que la utilización del ratón, sobre todo para las tareas de administración (opinión personal).

Aquí 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 dado que se trata de su entorno.

VI. Y luego...


La variable PATH sólo es una variable entre las varias decenas que contiene el shell.

Puede mostrar las variables de su entorno sin preocuparse de sus nombres (que talvez ni las conozca).

Para ello tiene a su disposición varios comandos
printenv
env
set
export


PD: El artículo original fue escrito por lami20j contribuidor de CommentCaMarche
Sistemas operativos - Variables del entorno Una variable del entorno es un valor dinámico cargado en la memoria, que puede ser utilizado por varios procesos que funcionan simultáneamente. En la mayoría de los sistemas operativos, la ubicación de algunas bibliotecas o de los archivos... es.kioskea.net/systemes/variables-environnement.php3
Descargar DAZ Studio DAZ Studio es una seria herramienta para el diseño y modelado en 3D. Es un programa con el que podras trabajar hasta los detalles mas minimos de escenografia, figuras humanoides, entorno etc. Podras variar el angulo de la camara, modificar la luz, y... es.kioskea.net/telecharger/telecharger-950-daz-studio
Ejecutar un script Ejecución de un script Para poder ejecutar un script o un programa en línea de comandos existen varias posibilidades: 1. La ruta absoluta 2. La ruta relativa 3. Modificar la variable PATH En primer lugar convierte el script... es.kioskea.net/faq/sujet-335-ejecutar-un-script
Abrir varias sesiones simultáneamente en MSN/WLMPor defecto, solo es posible abrir una sesión a la vez en Windows Live Messenger (WLM/MSN). Pero instalando un parche podemos cambiar esta restricción y abrir varias sesiones al mismo tiempo en el MSN. MSN Polygamy MSN Universal... es.kioskea.net/faq/sujet-169-abrir-varias-sesiones-simultaneamente-en-msn-wlm
Entornos gráficos 2DEntornos gráficos 2D Enlightenment FVWM – Crystal GNOME KDE Xfce En la web Contrariamente a algunas soluciones propietarias (Windows y Mac), GNU/Linux ofrece de manera nativa la posibilidad de elegir el escritorio de trabajo. De... es.kioskea.net/faq/sujet-499-entornos-graficos-2d
[Mitos] Instalar Windows en varias PCsMito Si tenemos varias PCs y un solo CD de Windows, es posible instalar la misma versión de Windows en todas las PCs. Realidad En las versiones anteriores a Windows XP, esto era posible, aun cuando es ilegal! A partir de Windows XP esto se... es.kioskea.net/faq/sujet-1424-mitos-instalar-windows-en-varias-pcs
Varias peliculas en un DVD (Resuelto)Buenas gente como va . Les queria preguntar lo sig : tengo varias pliculas dvdrip.xvid ( 700 MB cada una aprox ) y me gustaria pasarlas a un DVD sin necesidad de "convertirlas" al formato DVD , es decir , sin necesidad de generar los archivos VOB ,... es.kioskea.net/forum/affich-2190-varias-peliculas-en-un-dvd
QUIERES GRABAR VARIAS PELICULAS CON EL NEROHola, QUIERES APRENDER A GRABAR VARIAS PELICULAS CON EL NERO PINCHA EN ESTE ENLACE Y BUSCA EN VIDEOS. http://es.netlog.com/stivilander/guestbook yo estoy buscando videomanuales en español del programa Macromedia Dreamweaver MX 2004 si alguien sabe que... es.kioskea.net/forum/affich-14202-quieres-grabar-varias-peliculas-con-el-nero
Varios correosHola, tengo varios correos electrónicos y quería saber si existe alguna manera de poder recibir todos los correos en uno solo. O si existe algún programa que cumpla estos requisitos. es.kioskea.net/forum/affich-208-varios-correos
Descargar MSN PolygamyMSN Polygamy te permite abrir más de una sesión de MSN messenger así como varias cuentas de Hotmail simultáneamente. MSN Polygamy soporta la mayoría de versiones de MSN Messenger, desde la versión 6.x a la 8.1.0178. Además soporta Windows... es.kioskea.net/telecharger/telecharger-101-msn-polygamy
Descargar MySQLMySQL Workbench es un programa para la administracion de bases de datos. Esta aplicacion hecha para MySQL permite manejar toda tu base de datos de forma visual. Ademas tienes la posibilidad de crear un script para poder transformar todo el entorno... es.kioskea.net/telecharger/telecharger-799-mysql
Descargar ARES P2PAres es un cliente de intercambio de archivos peer to peer para buscar y descargar todo tipo de archivos. Ares es capaz de descargar un mismo archivo de varias fuentes (si un mismo archivo es compartido por varios usuarios a la vez) mejorando así... es.kioskea.net/telecharger/telecharger-58-ares-p2p
Redes - Arquitectura Cliente/Servidor Diversas aplicaciones se ejecutan en un entorno cliente/servidor. Esto significa que los equipos clientes (equipos que forman parte de una red) contactan a un servidor, un equipo generalmente muy potente en materia de capacidad de entrada/salida, que... es.kioskea.net/cs/csintro.php3
Sistema UNIX: Introducción El sistema Unix es un sistema operativo que admitemúltiples usuarios, así como también múltiples tareas, lo que significa que permite que en un único equipo o multiprocesador se ejecuten simultáneamente varios programas a cargo de uno o varios... es.kioskea.net/unix/unixintro.php3
Linux: Gestión de usuarios Cuando varias personas tienen acceso al sistema, el administrador debe gestionar a los usuarios. Para hacer esto, debe estar en conocimiento de los comandos comunes y los archivos que deberá configurar. Los archivos importantes son: el archivo... es.kioskea.net/unix/unix-users.php3