it-swarm-eu.dev

Mac OS X: luoghi convenzionali in cui dovrebbero essere presenti file binari

Ho scaricato un'applicazione che è un'applicazione da riga di comando e voglio metterla da qualche parte dove posso eseguirla dalla riga di comando senza dover digitare esplicitamente il percorso.

  1. Quali sono i percorsi convenzionali utilizzati per qualcosa di simile? /usr/bin? Ci sono diverse opzioni, una se lo voglio per tutti gli utenti, e una se la voglio solo per un utente particolare, come il mio account amministratore?

  2. O dovrei metterlo nella sua directory sotto la directory Applicazioni e aggiungerlo al percorso? In tal caso, quale file controlla dove è impostato il percorso?

55
Jason S

Risposta principale: probabilmente vorrai /usr/local/bin. A seconda di quanto è recente il tuo macOS, potresti dover aggiornare il tuo $PATH predefinito. Vedi sotto per ulteriori dettagli.

AGGIORNAMENTO 12-01-2018 A un certo punto da quando ho scritto la mia risposta originale, Apple ha cambiato il suo $PATH predefinito. Di conseguenza, molto di ciò che dico di seguito è irrilevante per i Mac recenti. Se scrivi echo $PATH in un terminale e /usr/local/bin è il primo, puoi ignorare tutto ciò che segue in merito alla modifica del tuo $PATH.

Risposta originale

I Mac sono inusuali in questo senso. La variabile $PATH predefinita per un utente normale assomiglia a questa:

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

Inserendo /usr/local/bin dopo /usr/bin e /bin, Mac alza il solito sistema. Normalmente, puoi inserire qualcosa in /usr/local/bin (ad esempio un secondo interprete Perl, compilato in un modo non standard), quindi un utente normale colpirà prima quello personalizzato piuttosto che quello a livello di sistema. Questo è buono. Gli utenti possono ottenere varianti, ma il sistema rimane puro. Dato il default $PATH di Apple, tuttavia, gli elementi in /usr/bin o /bin verranno trovati prima di qualsiasi cosa in /usr/local/bin. (Questo in pratica vanifica lo scopo di installare, ad es., Il Perl personalizzato in /usr/local/bin.)

Per risolvere questo problema, puoi modificare $PATH dell'utente regolare modificando il file .profile nella directory home dell'utente. (Il file potrebbe non esistere se si dispone di un'installazione completamente nuova. In tal caso, crearla.)

Semi-related: Homebrew fornisce un'eccellente gestione dei pacchetti per i Mac. Per impostazione predefinita, Homebrew installa il software in /usr/local, ma lo fa in un modo che rende molto facile rimuovere le cose e tornare a uno stato Vanilla in seguito.

47
Telemachus

/usr/local/bin e /usr/local/sbin valgono la pena di aggiungere al tuo percorso, poiché molti makefile per le build di origine sono stati installati per impostazione predefinita.

Se usi MacPorts , vale la pena aggiungere anche /opt/local/bin e /opt/local/sbin.

Il modo migliore per farlo è aggiungere

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

al file .bashrc nella tua home directory (che è nascosto, quindi la CLI è il modo migliore per farlo), oppure, se vuoi cambiare il percorso del sistema, aggiungi la stessa linea a /etc/bashrc (non nascosto), ma dovrai eseguire Sudo per farlo.

Se non hai un .bashrc nella casa di un utente, puoi crearne uno e aggiungervi questa linea, ma ricorda di cambiare le autorizzazioni sul file che hai creato per renderlo leggibile dall'utente in questione (ovviamente non pertinente se lo stai facendo per il tuo profilo).

Il $PATH alla fine aggiunge il percorso di default del sistema a tutto ciò che hai messo prima. Nota che il sistema cerca i binari nell'ordine dei percorsi dati, quindi se installi un binario in /usr/local o /opt/local che viene anche installato di default sul sistema, le versioni installate verranno trovate per prime, il che può (sebbene raramente) sconvolgere cose. Vale la pena guardare per.

Una buona informazione è qui .

Devo notare che quanto sopra assume che stai usando Bash per Shell, che è il predefinito su Mac OS X v10.4 (Tiger) e Mac OS X v10.5 (Leopard), ma non su sistemi precedenti, che usa invece tcsh, che ha una sintassi diversa.

Spero che aiuti...

9
avstrallen

Tendo ad andare con /usr/local. Ecco una bella spiegazione del perché , che si riferisce a Filesystem Hierarchy Standard (FHS) .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, che a sua volta dice di /usr/local:

Gerarchia terziaria per dati locali, specifici per questo host. In genere ha ulteriori sottodirectory, ad es. Bin, lib, share.⁢

7
John Topley