Come usare /etc/paths.d per aggiungere file eseguibili al mio percorso?


15

Sto cercando di usare /etc/paths.d per aggiungere un eseguibile alla mia variabile di percorso ma finora non ho avuto successo.

Il percorso completo del file eseguibile è: /opt/ImageMagick/bin/convert

/etc/paths.d contiene due file: 40-XQuartz e ImageMagick

40-XQuartz contiene una riga: /opt/X11/bin
ImageMagick contiene una riga:/opt/ImageMagick/bin

Il mio echo $PATHdà:

/Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Quindi sembra che solo il primo file (40-XQuartz) faccia il suo lavoro. Le autorizzazioni dei due file (40-XQuartz e ImageMagick) sono esattamente le stesse, quindi la mia domanda è: perché il primo funziona e il secondo no.

Sto eseguendo OS X Mavericks.


Che shell usi? Che cos'è / etc / percorsi?
Max Ried il

Aggiunta rigida /etc/paths.dper me funziona, ma riavvio qualsiasi applicazione terminale che sto usando (ITerm2 nel mio caso) per rendere effettivo il nuovo percorso
user1256923

Risposte:


17

Hai iniziato una nuova shell di accesso da quando hai aggiunto il nuovo file per ImageMagick? L'impostazione del percorso da paths.dvoci è fatto in /etc/profilee /etc/csh.login, quindi è necessario avviare una nuova shell per le nuove voci abbiano effetto.

OS X usa path_helperper impostare il percorso in base ai file in /etc/paths.d- puoi sempre chiamarlo manualmente (supponendo qui una shell tipo Bourne):

$ eval `/usr/libexec/path_helper -s`

Ovviamente ho avviato una nuova shell e ho anche riavviato il mio mac.
skiabox

nuova shell di login ha funzionato per me
incandescentman

3

In esecuzione

echo /opt/ImageMagick/bin|sudo tee /etc/paths.d/ImageMagick;bash -l;echo $PATH

aggiunge /opt/ImageMagick/binalla PATHmia installazione.

Ti stai sostituendo PATHin qualche altro posto come ~/.bash_profile?

I percorsi in /etc/paths.d/vengono aggiunti al percorso da /usr/libexec/path_helper, che è gestito da /etc/profile, /etc/zsh.enve /etc/csh.login. path_helpernon viene eseguito da applicazioni grafiche o quando viene invocato bash come shell non di accesso.

Puoi anche impostare un valore predefinito PATHin /etc/launchd.conf:

  1. Esegui per esempio setenv PATH /Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin|sudo tee -a /etc/launchd.conf.
  2. Riavviare oppure eseguire launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confe riavviare i processi.

Preferisco cambiare il percorso /etc/launchd.conf, perché influenza anche i programmi che non sono stati avviati dalle shell, come editor di testo e programmi avviati da processi di avvio.


0

Fantastico, stavo solo giocando con l'aggiunta di ImageMagic al mio Mac. Non solo hai bisogno ImageMagick/binnel tuo PATH, hai anche bisogno di un set di variabili d'ambiente, o aggiunto a:

Per testarlo puoi crearlo manualmente con:

export DYLD_LIBRARY=".:/opt/ImageMagic/lib"

Informazioni per l'impostazione di una variabile di ambiente per Mac OS sono disponibili qui, Impostazione delle variabili di ambiente in OS X?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.