paso - scripts linux ejercicios resueltos
¿Directorio estándar de Unix para poner ejecutables o scripts personalizados? (3)
Si tengo un script o programas de shell personalizados, que creé o descargué de la web, y quiero poder ejecutar esto desde la CLI, ¿existe la ubicación estándar para poner esto en la estructura de directorios de Linux / Unix?
/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?
Normalmente lo pongo debajo de mi carpeta ~ / bin y lo pongo en PATH, pero no parece limpio. Y cada vez que descargué un nuevo programa, tengo que ponerlo nuevamente en la RUTA.
Bueno, yo usaría ~/bin
(mientras que no soy root), pero con respecto a $PATH
siempre puedes hacer
export PATH=".:${PATH}"
# or
export PATH="${PATH}:."
De esta manera, el directorio de trabajo real siempre estará en su $PATH
. Aunque tiene algunos problemas de seguridad ... especialmente con scripts descargados.
Esto puede variar ligeramente dependiendo del sabor de Unix. Estoy asumiendo Linux aquí (aunque esto podría aplicarse a OSX). De acuerdo con el Estándar de jerarquía del sistema de archivos (FHS) (enlace obtenido del grupo de trabajo Base de Linux estándar ):
La jerarquía
/usr/local
debe ser utilizada por el administrador del sistema al instalar el software localmente. Debe evitar sobrescribirse cuando se actualiza el software del sistema. Se puede usar para programas y datos que se pueden compartir entre un grupo de hosts, pero que no se encuentran en/usr
.El software instalado localmente debe colocarse en
/usr/local
lugar de/usr
menos que se lo instale para reemplazar o actualizar el software en/usr
.
/usr/local/bin
menudo está en la ruta de forma predeterminada.
Tenga en cuenta que solo debe colocar el ejecutable o un enlace en /usr/local/bin
, el resto puede tener que ir en /usr/local/lib
o /usr/local/share
.
El árbol /opt
también podría ser sensato:
/opt
está reservado para la instalación de paquetes de software de aplicaciones complementarias.Un paquete que se instalará en / opt debe ubicar sus archivos estáticos en un árbol de directorio
/opt/<package>
/opt/<provider>
separado, donde<package>
es un nombre que describe el paquete de software y<provider>
es el Nombre registrado de LANANA del proveedor.[...]
Los directorios / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib y / opt / man están reservados para uso del administrador del sistema local. Los paquetes pueden proporcionar archivos "frontales" destinados a ser ubicados (vinculando o copiando) estos directorios reservados por el administrador del sistema local, pero deben funcionar normalmente en ausencia de estos directorios reservados.
(Puede crear su propio enlace desde /opt/your-package/bin/executable
en /opt/bin
, y poner /opt/bin
en la PATH
si aún no está allí).
/usr/local/bin
existe precisamente para este propósito, para la instalación de todo el sistema. Para su uso privado, ~/bin
es el estándar de facto.
Si desea mantener cada binario en su propio subdirectorio, puede hacerlo y agregar un enlace simbólico a un directorio que ya esté en su PATH
. Así por ejemplo
curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/
siempre que $HOME/bin
esté en su PATH
. (Hay herramientas como stow
que hacen esto, y mucho más, detrás de escena para ti).