zsh:符号链接级别太多:gcc

zsh: too many levels of symbolic links: 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 上找到了上面粘贴的循环 link。有人可以帮我解决这个问题吗?

我确定这已经在之前的回答中涵盖了,但是,您可以看到您有 /usr/bin/gcc 链接到 /usr/bin/gcc-4.5,而 /usr/bin/gcc-4.5 链接到 /usr/bin/gcc.圆。因此,zsh 最终会停止绕圈子并向您提供该消息。您需要删除 /usr/bin/gcc* 然后重新安装吗?

100% 解决了问题

问题出在你的相对路径上。我有一个类似的问题 symlinking 我的 Nginx 配置从 /usr/local/etc/nginx /etc/nginx.如果你像这样创建 symlink:

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

您实际上会生成 link /etc/nginx -> /etc/nginx,,因为源路径是相对于 link 的路径。

解决方法很简单,使用绝对路径即可:

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

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

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

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