Wie verwende ich /etc/paths.d, um meinem Pfad ausführbare Dateien hinzuzufügen?

15

Ich versuche, /etc/paths.d zu verwenden, um meiner Pfadvariablen eine ausführbare Datei hinzuzufügen, aber bisher habe ich keinen Erfolg.

Der vollständige Pfad der ausführbaren Datei lautet: /opt/ImageMagick/bin/convert

/etc/paths.d enthält zwei Dateien: 40-XQuartz und ImageMagick

Der 40-XQuartz enthält eine Zeile: /opt/X11/bin
Der ImageMagick enthält eine Zeile:/opt/ImageMagick/bin

Meine echo $PATHgibt:

/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

Es scheint also, dass nur die erste Datei (40-XQuartz) ihren Job macht. Die Berechtigungen der beiden Dateien (40-XQuartz und ImageMagick) sind genau gleich. Meine Frage ist also, warum die erste funktioniert und die zweite nicht.

Ich verwende OS X Mavericks.

skiabox
quelle
Welche Shell benutzt du? Was ist mit / etc / path?
Max Ried
Das Hinzufügen von steif /etc/paths.dfunktioniert für mich, aber ich starte die von mir verwendete Terminalanwendung (in meinem Fall ITerm2) neu, damit der neue Pfad wirksam wird
user1256923

Antworten:

17

Haben Sie eine neue Login-Shell gestartet, seit Sie die neue Datei für ImageMagick hinzugefügt haben? Die Einstellung des Pfads von paths.dEinträgen erfolgt in /etc/profileund /etc/csh.login, sodass Sie eine neue Shell starten müssen, damit die neuen Einträge wirksam werden.

OS X verwendet path_helper, um den Pfad basierend auf den Dateien in festzulegen /etc/paths.d- Sie können ihn jederzeit manuell aufrufen (vorausgesetzt, hier handelt es sich um eine Bourne-ähnliche Shell):

$ eval `/usr/libexec/path_helper -s`
mjturner
quelle
Natürlich habe ich eine neue Shell gestartet. Ich habe sogar meinen Mac neu gestartet.
Skiabox
neue Login-Shell funktionierte für mich
Glühbirne
3

Laufen

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

fügt /opt/ImageMagick/binzu PATHmeiner Installation hinzu.

Überschreiben Sie PATHan einem anderen Ort wie ~/.bash_profile?

Die Pfade in /etc/paths.d/werden zu dem Pfad hinzugefügt , durch /usr/libexec/path_helper, die aus ausgeführt wird /etc/profile, /etc/zsh.envund /etc/csh.login. path_helperwird nicht von grafischen Anwendungen ausgeführt oder wenn bash als Nicht-Login-Shell aufgerufen wird.

Sie können auch einen Standard festlegen PATHin /etc/launchd.conf:

  1. Führen Sie zum Beispiel 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. launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confStarten Sie die Prozesse neu oder führen Sie sie aus und starten Sie sie neu.

Ich bevorzuge es, den Pfad in zu ändern /etc/launchd.conf, da dies auch Programme betrifft, die nicht über Shells gestartet werden, wie z. B. Texteditoren und Programme, die von Startjobs gestartet werden.

Lri
quelle
0

Genial, ich habe nur mit dem Hinzufügen von ImageMagic zu meinem Mac rumgespielt. Sie müssen nicht nur ImageMagick/binin Ihrer PATH, sondern auch eine Umgebungsvariable festlegen oder Folgendes hinzufügen:

Zum Testen können Sie es manuell erstellen mit:

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

Informationen zum Festlegen einer Umgebungsvariablen für Mac OS finden Sie hier. Festlegen von Umgebungsvariablen in OS X?

Tony
quelle