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

时间:2015-04-06 18:27:06

标签: gcc zsh symlink gcc-warning oh-my-zsh

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

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

2 个答案:

答案 0 :(得分:2)

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) 将不会被替换。

答案 1 :(得分:1)

我确定之前的答案已经涵盖了这一点,但是,您可以看到/ usr / bin / gcc链接到/usr/bin/gcc-4.5,链接到/ usr /斌/ GCC。圆。所以,zsh最终会停止四处转圈并给你留言。你需要擦除/ usr / bin / gcc *然后重新安装吗?