Этот другой ответ хорош, особенно как временное переопределение. Для полноты картины это главное.
export PATH="/usr/local/Cellar/nano/2.9.1/bin:$PATH"
Проблема в том, что если вам нужно постоянное решение для нескольких инструментов, то при таком простом подходе вы $PATH
будете излишне раздуты.
Вот как этого избежать (в Debian; вопрос для Mac OS X, но я считаю, что решение также применимо или может быть легко адаптировано). Сначала создайте свой собственный bin/
:
mkdir ~/bin/
(Изменить: в macOS, ~/Library/bin/
немного лучше подходит для организации домашних папок. Я решил не менять свой ответ, адаптируя этот путь к вашим потребностям.)
Затем измените ваш $PATH
:
PATH=~/bin:"$PATH"
(См. Примечание 1 ниже, если вы хотите сделать его постоянным.)
Затем сделайте символическую ссылку на желаемый nano
(и любой другой двоичный файл) на ваш пользовательский bin/
:
ln -s /usr/local/Cellar/nano/2.9.1/bin/nano ~/bin/
(См. Примечание 2 ниже, если вы хотите использовать это nano
сразу.)
Этот подход имеет следующие преимущества:
- Ваше
$PATH
пребывание относительно короткое и чистое; - с помощью
ls -l ~/bin/
него можно легко определить, какие инструменты вы переопределяете на какие; это намного лучше, чем анализировать раздутый,$PATH
который определяет каталоги; в каждом каталоге может быть много исполняемых файлов и вамls
все равно нужно их знать; - удаление символической ссылки, ее создание заново намного проще, чем изменение
$PATH
, особенно внутри скрипта; - Вы также можете разместить свои собственные скрипты в
~/bin/
.
Примечание 1: в моем Debian /etc/skel/.profile
есть следующий код:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
Мой ~/.profile
был создан как копия /etc/skel/.profile
, поэтому код существует с самого начала. Это означает, что каждый новый сеанс оболочки корректирует его, $PATH
чтобы включить мой приватный bin/
; все, что мне нужно было сделать, это создать каталог.
Примечание 2: при изменении $PATH
в середине сеанса (например, для тестирования моего решения) имейте в виду, что ваша оболочка может помнить старое местоположение любого исполняемого файла, который она уже искала в соответствии со старым $PATH
. Обычные оболочки используют hash
встроенные функции для управления этим. Используйте hash -r
при необходимости.
Если вы настраиваете $PATH
в самом начале сеанса оболочки (например, в .profile
), то такой проблемы нет.