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

1414
Michael Nielsen

У меня 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.

1

3 ответа на вопрос

2
Kamil Maciorowski

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

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

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

Вы можете создать символическую ссылку /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 
1
Michael Nielsen

Кажется:

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

делает трюк.