ZSH:符号链接的级别太多:GCC


lrwxr-xr-x   1 root   wheel        16 Apr  6 13:10 g++ -> /usr/bin/g++-4.5
-rwxr-xr-x   1 root   wheel     14272 Feb 14  2014 gatherheaderdoc
lrwxr-xr-x   1 root   wheel        16 Apr  6 13:11 gcc -> /usr/bin/gcc-4.5
lrwxr-xr-x   1 root   wheel        22 Jul  2  2014 gcc-4.2 -> /usr/local/bin/gcc-4.2
lrwxr-xr-x   1 root   wheel        12 Apr  6 10:59 gcc-4.4 -> /usr/bin/gcc
lrwxr-xr-x   1 root   wheel        12 Apr  6 11:17 gcc-4.5 -> /usr/bin/gcc

嗨,我对 Linux 有点陌生。所以我需要一些关于这个问题的帮助。我更新了gcc的新版本,当我尝试使用gcc --version检查版本时,出现以下错误,zsh: too many levels of symbolic links: gcc

我在/usr/bin上运行ls -l,找到了上面粘贴的循环链接。有人可以帮助我解决这个问题吗?

> 100% 解决了问题

问题在于您的相对路径。我遇到了类似的问题,将我的 Nginx 配置从 /usr/local/etc/nginx 链接到 /etc/nginx. 如果您像这样创建符号链接:

cd /usr/local/etc
ln -s nginx/ /etc/nginx

实际上,您将使链接/etc/nginx -> /etc/nginx,,因为源路径相对于链接的路径。

解决方案就像使用绝对路径一样简单:

ln -s /usr/local/etc/nginx /etc/nginx

如果要使用相对路径并让它们按照预期的方式运行,可以使用 pwd 将当前工作目录路径放入其中,如下所示:

cd /usr/local/etc
ln -s "$(pwd)/nginx/" /etc/nginx

您可能希望在路径周围使用引号,以确保对当前路径中的空格等内容进行转义。请注意,执行此操作时必须使用双引号,因为如果使用单引号,则不会替换 $(pwd(。

我相信这已经在之前的答案中涵盖了,但是,你可以看到你有/usr/bin/gcc 链接到/usr/bin/gcc-4.5,它链接到/usr/bin/gcc。 循环。 所以,zsh最终停止了兜圈子,并给你这个信息。 您需要擦除/usr/bin/gcc* 然后重新安装它吗?

最新更新