Jak używać /etc/paths.d, aby dodać pliki wykonywalne do mojej ścieżki?

15

Próbuję użyć /etc/paths.d, aby dodać plik wykonywalny do mojej zmiennej ścieżki, ale jak dotąd nie powiodło się.

Pełna ścieżka do pliku wykonywalnego to: /opt/ImageMagick/bin/convert

/etc/paths.d zawiera dwa pliki: 40-XQuartz i ImageMagick

40-XQuartz zawiera jedną linię: /opt/X11/bin
ImageMagick zawiera jedną linię:/opt/ImageMagick/bin

Mój echo $PATHdaje:

/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

Wygląda więc na to, że tylko pierwszy plik (40-XQuartz) wykonuje swoje zadanie. Uprawnienia dwóch plików (40-XQuartz i ImageMagick) są dokładnie takie same, więc moje pytanie brzmi: dlaczego pierwszy działa, a drugi nie.

Używam OS X Mavericks.

skiabox
źródło
Jakiej powłoki używasz? Co z / etc / paths?
Max Ried
Dodanie sztywności do /etc/paths.ddziała dla mnie, ale uruchamiam ponownie dowolną aplikację terminalową, której używam (ITerm2 w moim przypadku), aby nowa ścieżka
zaczęła

Odpowiedzi:

17

Czy zacząłeś nową powłokę logowania od czasu dodania nowego pliku dla ImageMagick? Ustawienie ścieżki z paths.dpozycji jest wykonane w /etc/profilei /etc/csh.login, więc musisz uruchomić nową powłokę, aby nowe wpisy zaczęły obowiązywać.

OS X path_helperustawia ścieżkę na podstawie plików w /etc/paths.d- zawsze możesz ją wywołać ręcznie (zakładając tutaj powłokę podobną do Bourne'a):

$ eval `/usr/libexec/path_helper -s`
mjturner
źródło
Oczywiście uruchomiłem nową powłokę, a nawet uruchomiłem ponownie komputer Mac.
skiabox
nowa powłoka logowania zadziałała dla mnie
incandescentman
3

Bieganie

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

dodaje /opt/ImageMagick/bindo PATHmojej instalacji.

Zastanawiasz się PATHw jakimś innym miejscu ~/.bash_profile?

Ścieżki w /etc/paths.d/dodaje się do ścieżki za pomocą /usr/libexec/path_helper, wykonane z /etc/profile, /etc/zsh.envi /etc/csh.login. path_helpernie jest uruchamiany przez aplikacje graficzne lub gdy bash jest wywoływany jako powłoka niezalogowana.

Możesz również ustawić wartość domyślną PATHw /etc/launchd.conf:

  1. Uruchom na przykład 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. Uruchom ponownie lub uruchom launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confi uruchom ponownie procesy.

Wolę zmienić ścieżkę /etc/launchd.conf, ponieważ wpływa ona również na programy, które nie są uruchamiane z powłok, takie jak edytory tekstu i programy uruchamiane przez uruchomione zadania.

Lri
źródło
0

Świetnie, po prostu bawiłem się, dodając ImageMagic do mojego komputera Mac. Potrzebujesz nie tylko ImageMagick/binswojego PATH, ale także zestawu zmiennych środowiskowych lub dodanych do:

Aby przetestować, możesz utworzyć go ręcznie za pomocą:

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

Informacje na temat ustawiania zmiennej środowiskowej dla Mac OS można znaleźć tutaj. Ustawianie zmiennych środowiskowych w OS X?

Tony
źródło