¿Dónde debo almacenar las aplicaciones de línea de comandos?

46

Cuando descargo aplicaciones de línea de comandos, se encuentran en mi ~/Downloads/directorio. Pero siento que este es un lugar incorrecto para tener una aplicación de línea de comando ubicada. ¿En qué parte del sistema de archivos de Mac OS X debo almacenar las aplicaciones de línea de comandos?

/Applications/También se siente mal, es más para aplicaciones de escritorio. Y /bin/suena más para aplicaciones que pertenecen a OS X.

Jonas
fuente
Estoy de acuerdo con su opinión de que poner las cosas directamente en / bin o / Applications generalmente es deficiente. La respuesta de Patrix es la ubicación más canónica que he visto para el almacenamiento general de líneas de comandos de programas y scripts.
bmike
2
No los veo como duplicados, ya que la pregunta vinculada parece más sobre hacer malabarismos con varias opciones de terceros y esto es más puro: ¿a dónde van mis aplicaciones descargadas manualmente?
bmike

Respuestas:

44

Dado que OS X proviene de una herencia de Unix, querrá almacenar archivos del sistema /usr/local/binpara aplicaciones de línea de comandos y scripts que pertenecen al sistema localmente y no a un usuario específico. Es posible que primero necesite crear este directorio ejecutando:

sudo mkdir -p /usr/local/bin

Puede mover cualquier aplicación de línea de comandos a esa carpeta ejecutando:

sudo mv my-binary /usr/local/bin/

Para asegurarse de que /usr/local/binsea ​​parte de su ruta de búsqueda estándar en Terminal, verifique el contenido /etc/pathsy agréguelo si es necesario:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Algunos usuarios crean un segundo directorio para los scripts de nivel de usuario, pero esto está aún más sujeto a preferencias personales.

Normalmente hago un directorio bin en cada carpeta de usuario y luego lo oculto del Finder, pero puede tomar esa decisión usted mismo si desea ocultarlo:

 mkdir ~/bin
 chflags hidden ~/bin

En este caso, querrá que la ruta de cada usuario incluya esta ubicación modificando los scripts de inicio del shell ( ~/.bash_profilepara bash, que es el shell estándar)

 export PATH=$PATH:~/bin

o codificando la ruta a cada aplicación cuando la ejecutas.

nohillside
fuente
3
Esta es absolutamente la mejor sugerencia, y la que le daría a cualquiera que pregunte. Agregaré solo 2 cosas: 1) /etc/launchd.conf también podría ser un lugar donde la ruta debe agregarse, 2) aunque uso / usr / local / para las utilidades de Unix instaladas a través homebrewde mis propios scripts de shell I tengo un ~ / Dropbox / bin / que también agregué a mi $ PATH, así que tengo todos mis scripts de shell personalizados en todos mis Mac. Pero lo hago además de / usr / local / bin / not en lugar de hacerlo.
TJ Luoma
/ usr / bin / local es el punto de UNIX tradicional para las secuencias de comandos de un usuario, que da acceso a cualquier otro usuario en el sistema. Colocar los scripts allí colocará los scripts en $ PATH de todos los usuarios sin esfuerzo. Pero creo que la manera Mac , ya que la mayoría de las Mac tienen un solo usuario, es crear un ~/bindirectorio, hacerlo invisible chflags uchg ~/biny agregarlo a los usuarios ~/.bash_profilepara que forme parte de los usuarios $ PATH. ~/binEs una ubicación superior para la seguridad y la migración. De lo contrario, debe recordar las cosas que dejó en / usr / local / bin. Y ln -s ~/bin ~/Dropbox/también es agradable.
Chillin
7

Considere crear un /optdirectorio, que es otra ubicación donde el software Unix personalizado aparecería por convención.

Matt Stephenson
fuente
55
/opt/es muy útil para aplicaciones completas, mientras que /usr/local/bin/es más apropiado para scripts de línea de comandos independientes. A menudo es preferible usarlo /opt/en casos en que una colección de scripts relacionados actúe como una biblioteca (por ejemplo, /opt/myscriptslib/bin/).
plasmid87
Gracias por tus consejos. Personalmente creé la carpeta / opt / para poner mi software y luego hice enlaces simbólicos a / usr / local / bin para todos los ejecutables ... luego no es necesario agregar / opt / myspecific-soft en la variable de entorno de ruta .
рüффп