Я ЗНАЮ, что этот вопрос является своего рода дублированием, но я думаю, что моя проблема немного отличается от других вопросов, которые я нашел здесь.

Если я отображаю $ PATH, я вижу обычную строку с несколькими путями. Хорошо. Но я не могу найти, где они действительно написаны (по крайней мере, не все):

/ Частный / и т.д. / профиль:

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

/private/etc/paths:(есть некоторые, но не все, что я могу видеть из эха !!!)

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

~/.Bash_profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

~/.Bashrc

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

И у меня в настоящее время нет файла ~/.profile.

Я вообще не специалист по Unix. Я не могу понять, откуда берутся все пути и где лучшее место для добавления или изменения.

Можете ли вы предложить мне что-нибудь? :)

1 ответ1

0

Обработка исходного кода утилитой path_helper в MacOSX

Предназначенный для упрощения управления путями , path_helper , новый инструмент, представленный в Leopard, который помогает управлять переменной окружения PATH , вероятно, был не таким желанным, как следовало бы, особенно потому, что он плохо документирован. Мы пытаемся пролить свет на этот неясный инструмент.

path_helper находится в /usr/libexec . Сам по себе этот инструмент безвреден, так как он ничего не меняет в вашей среде, это всего лишь генератор команд bash или csh для создания переменных среды PATH и MANPATH на основе некоторых текстовых файлов, находящихся в /etc Итак, попробуйте!

Более тысячи слов, давайте запустим это:

$ /usr/libexec/path_helper
PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/apache-maven/apache-maven-2.0.9/bin"; export PATH
MANPATH="/usr/share/man:/usr/local/share/man:/usr/X11/man"; export MANPATH

Выводимые ею команды не выполняются, если вы не вызовете ту же команду в eval как это делается в /etc/profile , который является сценарием запуска по умолчанию для оболочки bash :

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

Но как он строит эти пути?

  • Утилита path_helper считывает содержимое файлов в каталогах /etc/paths.d и /etc/manpaths.d и добавляет их содержимое в переменные среды PATH и MANPATH соответственно.
  • Файлы в этих каталогах должны содержать один элемент пути на строку.

В вашем примере /private/etc/profile вас есть:

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

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

Для получения дополнительной информации см. Справочную страницу

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .