Изменить версию Nano по умолчанию в Mac OS X

1

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

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

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

Michael Nielsen
источник

Ответы:

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 ) тогда такой проблемы нет.

Kamil Maciorowski
источник
В macOS ~ / Library / bin немного лучше подходит для организации домашней папки. ~ / Библиотека - это скрытая папка, содержащая объекты, к которым осуществляется автоматический доступ (например, путем включения в $PATH ), а не путем их ручного выбора (например, в диалоговом окне «Открыть»).
Gordon Davisson
@GordonDavisson Спасибо. Мой ответ сейчас упоминает об этом.
Kamil Maciorowski
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
fd0
источник
1

Кажется:

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

делает трюк.

Michael Nielsen
источник