Cómo agregar un directorio a su $ PATH en Linux

Contenidos

$PATH es uno de los manipuladores silenciosos en el fondo de su computadora Linux. Afecta silenciosamente su experiencia de usuario, pero no tiene nada de sospechoso. Le explicaremos qué hace y cómo puede ajustarlo.

¿Qué es $ PATH en Linux y cómo funciona?

Cuando escribe un comando en una ventana de terminal y presiona Enter, inicia una gran cantidad de actividad inclusive antes de que se ejecute el comando.

Intento es el shell predeterminado en la mayoría de las distribuciones de Linux. Interpreta la línea de texto que ingresó e identifica los nombres de los comandos entremezclados con los parámetros, tuberías, redirecciones, y cualquier otra cosa que haya. Después, localiza los binarios ejecutables para esos comandos y los lanza con los parámetros que proporcionó.

El primer paso que toma el shell para localizar el ejecutable es identificar si hay un binario involucrado. Si el comando que utiliza está dentro del propio shell (un «Shell incorporado») no es necesario realizar más búsquedas.

Los ítems incorporados de la carcasa son los más fáciles de hallar debido a que forman parte integral de la carcasa. Es como tenerlos en un cinturón de herramientas: siempre están contigo.

A pesar de esto, si necesita alguna de sus otras herramientas, debe buscar en el taller para encontrarla. ¿Está en su mesa de trabajo o en un colgador de pared? Eso es lo que el $PATH la variable de entorno lo hace. Contiene una lista de lugares en los que el shell busca y el orden en el que se buscarán.

Si desea ver si un comando es un shell incorporado, un alias, una función o un mv / trabajo / un archivo binario independiente, puedes utilizar el type comando como se muestra a continuación:

type clear
type cd

Esto nos dice que clear es un archivo binario, y el primero que se encuentra en la ruta se encuentra en /usr/bin. Puede tener más de una versión de clear instalado en su computadora, pero este es el que el shell intentará utilizar.

Como podíamos esperar, cd es un shell incorporado.

Listado de su $ PATH

Es fácil ver lo que hay en tu camino. Simplemente escriba lo siguiente para utilizar el echo mando e imprime el valor celebrado en el $PATH variable:

echo $PATH

La salida es una lista de dos puntos (:) ubicaciones delimitadas del sistema de archivos. El shell busca de izquierda a derecha a través de la ruta, comprobando la ubicación de cada sistema de archivos en busca de un ejecutable coincidente para ejecutar su comando.

Podemos seleccionar nuestro camino a través de la lista para ver las ubicaciones del sistema de archivos que se buscarán y el orden en el que se buscarán:

  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin

Algo que puede no ser inmediatamente obvio es que la búsqueda no comienza en el directorio de trabajo actual. Más bien, se abre paso a través de los directorios enumerados, y solo los directorios enumerados.

Si el directorio de trabajo actual no está en su ruta, no se buscará. Al mismo tiempo, si tiene comandos almacenados en directorios que no están en la ruta, el shell no los encontrará.

Para demostrar esto, creamos un pequeño programa llamado rf. Cuando se ejecuta, rf imprime el nombre del directorio desde el que se inició en la ventana del terminal. Está ubicado en /usr/local/bin. Además tenemos una versión más reciente en el /dave/work directorio.

Escribimos lo siguiente which mando para mostrarnos qué versión de nuestro programa el shell encontrará y usará:

which rf

El shell informa que la versión que encontró es la del directorio que está en la ruta.

Escribimos lo siguiente para encenderlo:

rf

Versión 1.0 de rf corre y confirma que nuestras expectativas eran correctas. La versión encontrada y ejecutada se encuentra en /usr/local/bin.

Para ejecutar cualquier otra versión de rf en esta computadora, tendremos que utilizar la ruta al ejecutable en la línea de comando, como se muestra a continuación:

./work/rf

Ahora que le hemos dicho al shell dónde hallar la versión de rf que queremos ejecutar, utiliza la versión 1.1. Si preferimos esta versión, podemos copiarla en el /usr/local/bin directorio y sobrescriba el anterior.

Digamos que estamos desarrollando una versión nueva de rf. Tendremos que ejecutarlo muchas veces a medida que lo desarrollamos y lo probamos, pero no queremos copiar una compilación de desarrollo inédita en el entorno en vivo.

O tal vez hemos descargado una versión nueva de rf y queremos hacer algunas pruebas de verificación antes de que esté disponible públicamente.

Si agregamos nuestro directorio de trabajo a la ruta, hacemos que el shell encuentre nuestra versión. Y este cambio solo nos afectará a nosotros; otros seguirán usando la versión de rf en /usr/local/bin .

Agregar un directorio a su $ PATH

Puedes utilizar el export comando para agregar un directorio al $PATH. Después, el directorio se incluye en el listado de ubicaciones del sistema de archivos que busca el shell. Cuando el shell encuentra un ejecutable coincidente, deja de buscar, por lo que debe asegurarse de que busque en su directorio primero, antes /usr/local/bin.

Esto es fácil de hacer. Para nuestro ejemplo, escribimos lo siguiente para agregar nuestro directorio al inicio de la ruta para que sea la primera ubicación buscada:

export PATH=/home/dave/work:$PATH

Este comando establece $PATH para ser igual al directorio que estamos agregando, /home/dave/work, y posteriormente toda la ruta actual.

El primero PATH no tiene signo de dólar$). Establecemos el valor para PATH. El final $PATH tiene un signo de dólar debido a que estamos haciendo referencia al contenido almacenado en el PATH variable. Al mismo tiempo, tenga en cuenta los dos puntos (:) entre el nuevo directorio y el $PATH nombre de la variable.

Veamos cómo se ve el camino ahora:

echo $PATH

Nuestro /home/dave/work El directorio se agrega al inicio de la ruta. Los dos puntos que proporcionamos lo separan del resto del camino.

Escribimos lo siguiente para verificar nuestra versión de rf es el primero que se encuentra:

which rf

La prueba en el pudín se está ejecutando rf, Como se muestra abajo:

rf

El shell encuentra la versión 1.1 y la ejecuta desde /home/dave/work.

Para agregar nuestro directorio al final de la ruta, simplemente lo movemos al final del comando, así:

export PATH=$PATH:/home/dave/work

Hacer permanentes los cambios

Como Beth Brooke-Marciniak dijo: «El éxito está bien, pero el éxito es fugaz». En el momento en que cierra la ventana de la terminal, cualquier cambio que haya realizado en el $PATH se fueron. Para que sean permanentes, debes poner tu export comando en un archivo de configuración.

Cuando pones el export mando en tu .bashrc archivo, establece la ruta cada vez que abre una ventana de terminal. distinto a SSH sesiones, para lo cual debe iniciar sesión, se denominan sesiones «interactivas».

En el pasado, pondría el export mando en tu .profile file para determinar la ruta para iniciar sesión en sesiones de terminal.

A pesar de esto, encontramos que si ponemos el export comando en el .bashrc o .profile archivos, configuró correctamente la ruta para las sesiones de terminal interactivas y de inicio de sesión. Tu experiencia puede ser distinto. Para manejar todas las eventualidades, le mostraremos cómo hacerlo en ambos archivos.

Utilice el siguiente comando en su /home directorio para editar el .bashrc expediente:

gedit .bashrc

los gedit el editor se abre con el .bashrc archivo cargado.

El editor gedit con el archivo ".bashrc" cargado.

Desplácese hasta la parte inferior del archivo y posteriormente agregue el siguiente comando de exportación que usamos previamente:

export PATH=/home/dave/work:$PATH

Guarda el archivo. A continuación, cierre y vuelva a abrir la ventana de terminal o utilice el dot comando para leer el .bashrc archivo, de la próxima manera:

. .bashrc

Después, escriba lo siguiente echo comando para verificar la ruta:

echo $PATH

Esto agrega el /home/dave/work directorio al inicio de la ruta.

El procedimiento para agregar el comando al .profile el archivo es el mismo. Escriba el siguiente comando:

gedit .profile

los gedit editor se inicia con el .profile archivo cargado.

El editor gedit con el archivo ".profile" cargado.

Añade el export comando al final del archivo y posteriormente guárdelo. Cerrar y abrir una nueva ventana de terminal es insuficiente para forzar la .profile archivo para ser releído. Para que la nueva configuración surta efecto, debe cerrar la sesión y volver a iniciarla o utilizar la dot comando como se muestra a continuación:

. .profile

RELACIONADO: Cómo editar archivos de texto gráficamente en Linux con gedit

Estableciendo el camino para todos

Para determinar la ruta para todos los que usan el sistema, puede editar el /etc/profile expediente.

Necesitarás utilizar sudo, como sigue:

sudo gedit /etc/profile

Cuando el gedit se inicia el editor, agregue el comando de exportación al final del archivo.

El editor gedit con el archivo "/ etc / profile" cargado.

Guarde y cierre el archivo. Los cambios se aplicarán a los demás la próxima vez que inicien sesión.

Una nota sobre seguridad

Asegúrese de no agregar accidentalmente dos puntos a la izquierda «:”A la ruta, como se muestra a continuación.

Si lo hace, esto buscará primero en el directorio actual, lo que presenta un riesgo de seguridad. Supongamos que descargó un archivo de almacenamiento y lo descomprimió en un directorio. Miras los archivos y ves otro archivo comprimido. Llamas a descomprimir una vez más para extraer ese archivo.

Si el primer archivo contenía un archivo ejecutable llamado unzip que era un ejecutable malicioso, accidentalmente lo activarías en lugar del real unzip ejecutable. Esto sucedería debido a que el shell buscaría primero en el directorio actual.

Por eso, siempre tenga cuidado al escribir su export comandos. Utilizar echo $ PATH para revisarlos y asegurarse de que estén como usted desea.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.