35 votos

¿Dónde está un buen lugar permanente para instalar bash personalizado scripts?

Estoy a punto de instalar "leiningen" que es un bash script para el lenguaje de programación clojure con mucha utilidad... ...pero no estoy seguro de dónde conviene -poner- un ejecutable script en el sistema linux para que esté disponible de forma permanente y estable.

No creo que en cualquier lugar de /home tenga sentido, pero no sé qué directorio/directorios se supone que se usan para eso.

¿"/usr/share"?

1 votos

47voto

Trey Hunner Puntos 762

(Nota: ~ se traduce como /home/user en este post)

Personalmente, pongo todos mis sistemas personalizados scripts en /usr/local/bin y todos mis bash personales scripts en ~/bin . Muy pocos programas que instalo se colocan en /usr/local/bin directorio para que no esté muy desordenado y ya estaba en el $PATH variable en la mayoría de mis máquinas.

Para añadir /usr/local/bin a la ruta de su sistema (si no está ya allí) añada esto a /etc/profile :

PATH=$PATH:/usr/local/bin
export PATH

Para añadir ~/bin a la ruta de su usuario añada esto a ~/.bash_profile :

PATH=$PATH:$HOME/bin
export PATH

A veces, el valor por defecto .bash_profile tendrá una sentencia if que añade automáticamente ~/bin a $PATH si existe, así que crea el ~/bin y abre un nuevo terminal para ver si el tuyo ya lo hace.

0 votos

Los BSD lo hacen por defecto.

0 votos

@Chris: Los BSDs ponen muchas cosas en /usr/local/bin

0 votos

¿Cuál es la diferencia entre tu bash scripts y el sistema scripts, y hay alguna razón para que separes los dos?

9voto

Jamieson Becker Puntos 386

/usr/local/ es realmente el lugar adecuado, mientras que /opt es realmente para aplicaciones de terceros; "/opt está reservado para la instalación de paquetes de software de aplicaciones adicionales". Esto forma parte del estándar de jerarquía de sistemas de archivos.

Ver http://www.pathname.com/fhs/pub/fhs-2.3.html para debatir en /opt.

Para /usr/local/, es para "uso del administrador del sistema". No te olvides de las cosas que hay ahí documéntalas.

0 votos

El enlace que has proporcionado dice "Los directorios /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib y /opt/man están reservados para el uso del administrador local del sistema". No hay nada sobre /usr/local. Sólo se menciona /usr/local/share. Por otro lado, los programas compilados suelen instalarse en /usr/local en Linux. ¿No crees que /opt/bin es mejor lugar para el uso del administrador del sistema?

1 votos

@raacer Mi experiencia es que /usr/local - como su nombre indica - es para el administrador local, y /opt para las cosas que no se distribuyen oficialmente, como el software comercial de terceros que se gestiona mediante un proceso similar (puede ser sustituido o borrado en una actualización desde la fuente), pero que no es gestionado por el gestor de paquetes de la distro, o quizás se distribuye realmente como RPM o .deb paquetes, pero no organizados y empaquetados de acuerdo con todas las políticas y convenciones de la distro.

1 votos

@raacer Hay una sección separada completamente sobre /usr/local más adelante en el documento.

3voto

Tony Puntos 452

Históricamente se usaba algo como /opt. Cualquier cosa está bien siempre que se actualice en $PATH para los usuarios que se supone que lo tienen (de ahí que cualquier cosa en /home sea una mala idea).

2voto

Charles Stewart Puntos 500

/usr/share/clojure parece un lugar común para poner los binarios y bibliotecas de clojure - por qué no lo sé, parece algo natural para /usr/local/share/clojure - por lo que la creación de un site subdirectorio bajo esto para estos bash scripts parece estar bien.

El punto general es que tiene más sentido organizar scripts por función, no tener todos los scripts de bash en el mismo lugar.

1 votos

Hay un par de problemas al usar /usr/share por esto. En primer lugar share significa archivos independientes de la arquitectura (es decir, compartidos entre arquitecturas). Por esta razón, las bibliotecas y los ejecutables no pertenecen a un share directorio. En segundo lugar, excepto desde /usr/local nada que no sea el gestor de paquetes de la distribución debe escribir en /usr .

2voto

Hatebit Puntos 145

/usr/local Creo que hay una confusión en el significado de "local".

Según tengo entendido, "local" no significa "originado en/desde la máquina local" sino, más simplemente, "específico de la máquina local", que puede o no originarse en/desde la máquina local.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X