Directorio estándar Unix para poner ejecutables o scripts personalizados? [cerrado]
Si tengo un script de shell personalizado o programas, que he creado yo mismo o descargado de la web, y quiero ser capaz de ejecutar esto desde la CLI, ¿existe la ubicación estándar para poner esto en la estructura de directorios 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 en el CAMINO de nuevo.
3 answers
/usr/local/bin
existe precisamente para este propósito, para la instalación de todo el sistema. Para su propio 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 tu PATH
. (Hay herramientas como stow
que hacen esto behind y mucho más behind entre bastidores para ti.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-28 04:10:13
Esto puede variar ligeramente dependiendo del sabor de Unix. Estoy asumiendo Linux aquí (aunque esto podría aplicarse a OSX). De acuerdo con el Filesystem Hierarchy Standard (FHS) (enlace obtenido del Linux Standard Base working group):
La jerarquía
/usr/local
es para uso del administrador del sistema cuando instalación de software localmente. Tiene que estar a salvo de ser sobrescrita cuando se actualiza el software del sistema. Puede utilizarse para programas y datos que se pueden compartir entre un grupo de anfitriones, pero no encuentra en/usr
.El software instalado localmente debe colocarse dentro de
/usr/local
en lugar que/usr
a menos que se esté instalando para reemplazar o actualizar el software en/usr
.
/usr/local/bin
a menudo está en la ruta por defecto.
Tenga en cuenta que solo debe poner el ejecutable o un enlace a él en /usr/local/bin
, el resto puede tener que ir en /usr/local/lib
o /usr/local/share
.
El /opt
árbol también podría ser sensible:
/opt
está reservado para la instalación de software de aplicación adicional paquete.Un paquete que se va a instalar en / opt debe ubicar sus archivos estáticos en un separe
/opt/<package>
o/opt/<provider>
el árbol de directorios, donde<package>
es un nombre que describe el paquete de software y<provider>
es el nombre registrado LANANA del proveedor.[...]
El directorio /opt/bin, /opt/doc /opt/include /opt/info, /opt/lib, y / opt / man están reservados para el sistema local uso del administrador. Paquete puede proporcionar archivos "front-end" destinados a ser colocados en (mediante enlaces o copiando) estos directorios reservados por el administrador del sistema local, pero debe funcionar normalmente en ausencia de estos reservados Directory.
(Puedes hacer tu propio enlace de /opt/your-package/bin/executable
a /opt/bin
, y poner /opt/bin
en el PATH
si no está ya allí.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-06 23:20:31
Bueno, usaría ~/bin
(mientras 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 actual siempre estará en su $PATH
. Aunque tiene algunos problemas de seguridad... especialmente con scripts descargados.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-06 22:52:49