¿Qué debo hacer si quiero poder ejecutar un programa determinado independientemente de mi directorio actual? ¿Debo crear un enlace simbólico al programa en el /bin
carpeta?
Si solo escribe export PATH=$PATH:</path/to/file>
en la línea de comando solo durará la duración de la sesión.
Si desea cambiarlo permanentemente, agregue export PATH=$PATH:</path/to/file>
a su archivo ~/.bashrc (solo al final está bien).
La respuesta corta es que para ejecutar el programa, sin importar cuál sea su directorio, debe tener el directorio del programa en su ruta de búsqueda. El problema puede resolverse colocando el programa en una carpeta que ya está en esa ruta, o agregando una nueva carpeta a la ruta, ya sea que funcione. La mejor respuesta depende de:
¿Es este programa un programa descargado que ha compilado usted mismo desde la fuente?
Es muy probable que ya tenga un mecanismo de instalación. En la carpeta que compiló el programa, como root, ejecute 'make install'
¿Es este programa un programa descargado que desea que esté disponible como parte de los programas estándar en la computadora?
Tiene sentido colocar este tipo de aplicación en una carpeta estándar. es bastante común usar directorios como/usr/local/bin para dichos programas. Necesitará acceso de root para hacer esto.
Este es un programa que ha escrito para usted y/o no tiene privilegios especiales en la computadora.
Crear una carpeta en su directorio de inicio llamada 'bin' y colocar el programa allí. Es posible que deba editar su secuencia de comandos de inicio de sesión para agregar la ruta completa a esta carpeta (por ejemplo,/usr/home/jeremy/bin)
Si bien puede agregar su directorio actual a la ruta de búsqueda, tendrá que seguir haciendo esto con cada nuevo programa, y es más trabajo a largo plazo.
Colocando un enlace al archivo en el /bin
directorio no es lo mejor por múltiples razones.
/bin
se supone que el directorio está reservado para los programas que son necesarios para ejecutar el sistema (cosas como chmod
, mkdir
, etc.).En realidad, puede colocar (instalar) el archivo ejecutable en /usr/bin/
o incluso /usr/local/bin/
. Por supuesto, ha instalado manualmente el programa en ese punto; su distribución no hará un seguimiento de la misma manera que lo hace con el resto de sus programas: tendrá que actualizarla manualmente cuando sea necesario y eliminarla manualmente si desea que desaparezca. Además, tendrá que saber de qué paquetes depende (parece que ya usa el programa, por lo que se encarga, pero en general ...).
A menos que esté configurando un programa que espero que otros usuarios usen, eso no es lo que suelo hacer: creo un directorio bin solo para mí en mi directorio de inicio y edito mi perfil de Shell para agregar ~/bin/
a mi PATH
variable de entorno. Me resulta más fácil hacer un seguimiento de los programas que he instalado de esa manera, porque está separado del resto del sistema.
Si desea ejecutar un comando foo
en el directorio en el que se encuentra actualmente su Shell, básicamente tiene dos opciones:
Tipo ./foo
en el indicador de Shell.
Añade el .
directorio (.
es un nombre para "el directorio actual") a la variable de entorno PATH
; cómo hacerlo depende del Shell que esté utilizando:
para shells de tipo Bourne (bash, zsh, ksh, etc.) que escriba (consulte esta página para obtener más información):
export PATH=$PATH:.
para los shells de tipo csh (tcsh, csh) que escriba (consulte esta página para obtener más información):
set path = ( $path .)
Tenga en cuenta que 2. es un riesgo de seguridad en sistemas multiusuario: imagínese cd
al directorio /tmp
y un usuario malintencionado ha creado un binario de malware llamado ls
allí.
Jugar con el PATH
te abre a ejecutar programas maliciosos por error. El estándar es instalar cosas "locales" en /usr/local
(ver FHS , que codifica el uso de Unix: un poco anticuado pero da justificación)., /usr/local/bin
generalmente está en PATH
para todos los usuarios.
Mis programas "instalados localmente" están en $HOME/bin
, ambientada en el baile estándar de ./configure --prefix=$HOME ...
, junto con algunos alias (bash) para seleccionar, p. git autoconstruido sobre el sistema uno (los que no están en conflicto se encuentran en el PATH
al final.