Как использовать /etc/paths.d для добавления исполняемых файлов к моему пути?

15

Я пытаюсь использовать /etc/paths.d, чтобы добавить исполняемый файл к моей переменной пути, но пока не добился успеха.

Полный путь к исполняемому файлу: /opt/ImageMagick/bin/convert

/etc/paths.d содержит два файла: 40-XQuartz и ImageMagick

40-XQuartz содержит одну строку: /opt/X11/bin
ImageMagick содержит одну строку:/opt/ImageMagick/bin

Моя echo $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:/usr/local/bin:/opt/X11/bin

Таким образом, кажется, что только первый файл (40-XQuartz) делает свою работу. Права доступа к двум файлам (40-XQuartz и ImageMagick) абсолютно одинаковы, поэтому мой вопрос - почему первый работает, а второй - нет.

Я использую OS X Mavericks.

skiabox
источник
Какую оболочку вы используете? Что насчет / etc / paths?
Макс Райд
Добавление жестких /etc/paths.dссылок работает для меня, но я перезапускаю любое терминальное приложение, которое я использую (в моем случае ITerm2), чтобы новый путь вступил в силу
user1256923

Ответы:

17

Вы запустили новую оболочку для входа после добавления нового файла для ImageMagick? Настройка пути из paths.dзаписей выполняется в /etc/profileи /etc/csh.login, поэтому вам нужно запустить новую оболочку, чтобы новые записи вступили в силу.

OS X использует, path_helperчтобы установить путь на основе файлов в /etc/paths.d- вы всегда можете вызвать его вручную (при условии, что здесь используется оболочка типа Bourne):

$ eval `/usr/libexec/path_helper -s`
mjturner
источник
Конечно, я запустил новую оболочку. Я даже перезапустил свой Mac.
skiabox
у меня сработал новый логин
раскаленный человек
3

Бег

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

добавляет /opt/ImageMagick/binк PATHмоей установке.

Вы переопределяете PATHв каком-то другом месте, как ~/.bash_profile?

Пути в /etc/paths.d/добавлении к пути с помощью /usr/libexec/path_helper, которая запускается из /etc/profile, /etc/zsh.env, и /etc/csh.login. path_helperне запускается графическими приложениями или когда bash вызывается как не входящая в систему оболочка.

Вы также можете установить значение PATHпо умолчанию в /etc/launchd.conf:

  1. Беги к примеру 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.confи перезапустите процессы.

Я предпочитаю изменять путь /etc/launchd.conf, потому что это также влияет на программы, которые не запускаются из оболочек, такие как текстовые редакторы и программы, запускаемые запущенными заданиями.

LRI
источник
0

Круто, я просто поиграл с добавлением ImageMagic на мой Mac. Мало того, что вы нуждаетесь ImageMagick/binв вашем PATH, вам также нужен набор переменных окружения или добавленный в:

Для тестирования вы можете создать его вручную с помощью:

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

Информация для установки переменной среды для Mac OS может быть найдена здесь, Установка переменных среды в OS X?

Тони
источник