Я использую 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.
Вы можете создать символическую ссылку из /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
Этот другой ответ хорош, особенно как временное переопределение. Для полноты картины это главное.
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
), такой проблемы не возникает.
Кажется:
export PATH="/usr/local/Cellar/nano/2.9.1/bin:$PATH"
делает трюк.