Ответ 1
Любая строка, начинающаяся с #
, является комментарием. PATH=
устанавливает значение переменной PATH
, $PATH расширяется до текущего значения, а export
в начале делает значение доступным для программ, которые вы запускаете с терминала.
Предположим, что начальное значение PATH равно /usr/bin:/bin
.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Замените $PATH
на предыдущее значение $PATH. Поэтому приведенные выше значения PATH
to
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin
Перемещение вперед,
export PATH=$PATH:/usr/local/mysql/bin
Снова замените $PATH на предыдущее значение:
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
После
export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH
имеем
/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
(~
- специальный токен, который будет заменен на путь к вашему домашнему каталогу, но вы должны получить изображение.)
И, наконец, после
export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH
получаем
/Users/android-sdks/platform-tools:/Users/android-sdks/tools:/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
PATH
используется для поиска команд, которые вы вводите в командной строке. Поэтому, если вы наберете foo
, оболочка будет искать имена ниже, в указанном порядке:
/Users/android-sdks/platform-tools/foo
/Users/android-sdks/tools/foo
/android-sdks/platform-tools/foo
~/android-sdks/tools/foo
/opt/local/bin/foo
/opt/local/sbin/foo
/usr/bin/foo
/bin/foo
/usr/local/mysql/bin/foo
Чтобы увидеть текущее значение PATH, запустите
echo $PATH
Должны ли вы добавлять новые каталоги в начало PATH
или до конца? Это не всегда имеет значение, но иногда это происходит. Это зависит от того, какие местоположения вы хотите проверить в первую очередь.
Вы должны добавить к началу, если цель состоит в поиске других каталогов, прежде чем искать их по умолчанию. Например, git
- это утилита, используемая для управления исходным кодом. Если бы я хотел установить более новую версию git
в ~/git и использовать ее по умолчанию, я бы сделал:
export PATH=~/git/bin:$PATH
Это означает, что ~/ git/bin/git будет переопределять /opt/local/bin/ git.
С другой стороны, я бы предпочел, чтобы администратор установил git
в общесистемную. Если я хочу использовать свою локальную копию только до тех пор, пока администратор не сделает ее доступной для всех, тогда это имеет смысл:
export PATH=$PATH:~/git/bin
В этом случае ~/git/bin/git
будет использоваться только в том случае, если /opt/local/bin/git
еще не существует, так как /opt/local/bin
находится раньше в пути.
Многие команды не будут существовать более чем в одном месте. Например, вы можете написать my-backup-script
и поместить его в Apple Time Capsule в /Volumes/Capsule/scripts
. Не похоже, что в конфликте может возникнуть команда под названием my-backup-script
. Таким образом, любая из следующих команд позволит вам ввести my-backup-script
и запустить правую script:
export PATH=/Volumes/Capsule/scripts:$PATH
или
export PATH=$PATH:/Volumes/Capsule/scripts
Лучше ли? Моим советом было бы заняться этим. Помните, что системе нужно будет искать каталоги в $PATH
, чтобы, для каждой команды, которую нужно найти. Большинство команд будут в локальной системе, поэтому наиболее разумно положить более медленное сетевое хранилище в конце пути.