1

Я использую nano 2.0.6 по умолчанию в моем терминале Mac OS X при выполнении nano . У меня есть nano 2.9.1 в /usr/local/Cellar/nano/2.9.1/bin/nano .

Как мне изменить nano по умолчанию на версию 2.9.1 в терминале?

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

3 ответа3

2

Вы можете создать символическую ссылку из /usr/local/Cellar/nano/2.9.1/bin/nano в /usr/local/bin

ln -s /usr/local/Cellar/nano/2.9.1/bin/nano /usr/local/bin/nano

или вы можете создать псевдоним.

alias nano=/usr/local/Cellar/nano/2.9.1/bin/nano
2

Этот другой ответ хорош, особенно как временное переопределение. Для полноты картины это главное.

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), такой проблемы не возникает.

1

Кажется:

export PATH="/usr/local/Cellar/nano/2.9.1/bin:$PATH"

делает трюк.

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