执行时,我的 Mac OS X 终端默认安装了 nano 2.0.6 nano
。在 中安装了 nano 2.9.1 /usr/local/Cellar/nano/2.9.1/bin/nano
。
如何nano
在终端中将默认版本更改为 2.9.1?
我正在运行 Mac OS X 10.13.1。
答案1
这是另一个答案很好,尤其是作为临时替代。为了完整起见,这是它的要点:
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
,因此代码从一开始就在那里。这意味着每个新的 shell 会话都会调整其$PATH
以包含我的私有bin/
;我所要做的就是创建目录。
注意 2:$PATH
在会话中间进行修改时(例如,为了测试我的解决方案),请记住,您的 shell 可能会记住它已经根据旧文件查找过的任何可执行文件的旧位置$PATH
。常见的 shell 使用hash
内置用于管理此内容。hash -r
如有需要请使用。
如果您$PATH
在 shell 会话一开始就进行自定义(例如.profile
),那么就不会出现这样的问题。
答案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
答案3
似乎:
export PATH="/usr/local/Cellar/nano/2.9.1/bin:$PATH"
成功了。
答案4
也可以将其添加到你的 .bashrc/.zshrc/etc
function nano {
local nano_ver=$(l /usr/local/Cellar/nano/)
/usr/local/Cellar/nano/$nano_ver/bin/nano $1
}
具有语法高亮功能的完美函数是:
function nano {
local nano_ver=$(l /usr/local/Cellar/nano/)
if [ ! -f ~/.nanorc ]; then
touch ~/.nanorc
else
truncate -s 0 ~/.nanorc
fi
echo "include /usr/local/Cellar/nano/$nano_ver/share/nano/*.nanorc" >> ~/.nanorc
/usr/local/Cellar/nano/$nano_ver/bin/nano $1
}