it-swarm.dev

Mac OS X: lugares convencionales donde los archivos binarios deben vivir

He descargado una aplicación que es una aplicación de línea de comandos y quiero ubicarla en un lugar donde pueda ejecutarla desde la línea de comandos sin tener que escribir la ruta de forma explícita.

  1. ¿Cuáles son los caminos convencionales utilizados para algo como esto? /usr/bin? ¿Hay opciones diferentes, una si la quiero para todos los usuarios y otra si la quiero para un usuario en particular, como mi cuenta de administrador?

  2. ¿O debería ponerlo en su propio directorio en el directorio de Aplicaciones y agregarlo a la ruta? Si es así, ¿qué archivo controla dónde se establece la ruta?

55
Jason S

Respuesta básica: probablemente quieras /usr/local/bin. Dependiendo de qué tan reciente sea su macOS, es posible que deba actualizar su $PATH predeterminado. Vea a continuación para más detalles.

ACTUALIZACIÓN 12-01-2018 En algún momento desde que escribí mi respuesta original, Apple cambió su predeterminado $PATH. Como resultado, gran parte de lo que digo a continuación es irrelevante para las Mac recientes. Si escribe echo $PATH en un terminal, y /usr/local/bin es el primero, entonces puede ignorar todo lo que se muestra a continuación sobre cómo cambiar su $PATH.

Respuesta original

Las Mac son inusuales en este sentido. La variable predeterminada $PATH para un usuario normal tiene este aspecto:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Al poner /usr/local/bin después de /usr/bin y /bin, Mac actualiza el sistema habitual. Normalmente, puede poner algo en /usr/local/bin (por ejemplo, un segundo intérprete de Perl, compilado de alguna manera no estándar), y luego un usuario regular tendrá el primero personalizado en lugar del del sistema. Esto es bueno. Los usuarios pueden obtener variantes, pero el sistema se mantiene puro. Sin embargo, dado el $PATH predeterminado de Apple, los elementos en /usr/bin o /bin se encontrarán antes que cualquier cosa en /usr/local/bin. (Esto básicamente elimina el propósito de la instalación, por ejemplo, el Perl personalizado en /usr/local/bin.)

Para solucionar este problema, puede cambiar el $PATH del usuario normal editando el archivo .profile en el directorio de inicio del usuario. (Es posible que ese archivo no exista, si tiene una instalación completamente nueva. En ese caso, créela).

Semi-relacionados: Homebrew proporciona una excelente gestión de paquetes para Mac. De forma predeterminada, Homebrew instala el software en /usr/local, pero lo hace de una manera que hace que sea muy fácil eliminar cosas y volver a un estado Vanilla más adelante.

47
Telemachus

Vale la pena agregar /usr/local/bin y /usr/local/sbin, a tu ruta, ya que muchos makefiles para compilaciones de origen están predeterminados para instalarse allí.

Si usa MacPorts , vale la pena agregar /opt/local/bin y /opt/local/sbin también.

La mejor manera de hacer esto es agregar

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

al archivo .bashrc en su directorio de inicio (que está oculto, por lo que la CLI es la mejor manera de hacer esto), o, si desea cambiar la ruta de todo el sistema, agregue la misma línea a /etc/bashrc (no oculta), pero necesitarás Sudo para hacer esto.

Si no tiene un .bashrc en la casa de cualquier usuario, puede crear uno y agregarle esta línea, pero recuerde cambiar los permisos en el archivo que crea para que el usuario en cuestión pueda leerlo (obviamente no es relevante si lo haces por tu propio perfil).

El $PATH al final agrega la ruta predeterminada del sistema a lo que haya puesto antes. Tenga en cuenta que el sistema busca binarios en el orden de las rutas indicadas, por lo que si instala un binario en /usr/local o /opt/local que también se instala de forma predeterminada en el sistema, las versiones que instale se encontrarán primero, lo que puede (aunque rara vez) alterar cosas. Vale la pena mirar hacia fuera para.

La buena información está aquí .

Debo tener en cuenta que lo anterior supone que está utilizando Bash para el Shell, que es el valor predeterminado en Mac OS X v10.4 (Tiger) y Mac OS X v10.5 (Leopard), pero no en sistemas anteriores, que utiliza tcsh en su lugar, que tiene una sintaxis diferente.

Espero que eso ayude...

9
avstrallen

Tiendo a ir con /usr/local. Aquí hay una buena explicación de por qué , que se refiere a Estándar de Jerarquía del Sistema de Archivos (FHS) .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, que a su vez dice acerca de /usr/local:

Jerarquía terciaria para datos locales, específica de este Host. Típicamente tiene otros subdirectorios, por ejemplo, bin, lib, share.⁢

7
John Topley