it-swarm-es.tech

¿Cómo puedo hacer que un programa sea ejecutable desde cualquier lugar?

¿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?

79
aneuryzm

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

55
oadams

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.

24
Michael Shaw

Colocando un enlace al archivo en el /bin directorio no es lo mejor por múltiples razones.

  • Si el archivo ejecutable real está en una ubicación que algunos usuarios no pueden ver o ejecutar, lo ven como un enlace defectuoso o un programa disfuncional.
  • Los /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.

17
Shawn J. Goff

Si desea ejecutar un comando foo en el directorio en el que se encuentra actualmente su Shell, básicamente tiene dos opciones:

  1. Tipo ./foo en el indicador de Shell.

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

6
Riccardo Murri

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.

1
vonbrand