Linux命令行中创建的软连接(ln -s)的无法移动问题,以及绝对路径和相对路径的概念

来源:互联网 发布:查看数据库的存储过程 编辑:程序博客网 时间:2024/06/04 01:13
最近刚开始学习鸟哥的Linux基础篇,昨天试验了其中的一些命令,发现在某一个目录下对某个目录创建的软连接在移动到另一个目录下之后就无法正常打开了,问了下同学,这个问题顺利的解决了。

首先,在目录dir1下创建一个目录dir2,用到的命令是:
jack@ubuntu:~/dir1$ mkdir dir2

然后在创建这个目录的软连接,命名为link:
jack@ubuntu:~/dir1$ ln -s dir2 link

接着把这个move到上一层目录,
jack@ubuntu:~/dir1$ mv link ..

然后回到上一层目录:
jack@ubuntu:~/dir1$ cd ..

然后试图进入链接link,发现报错:
jack@ubuntu:~$ cd link
bash: cd: link: No such file or directory

这就是我之前遇到的问题描述,没想到我刚描述完的问题,我同学思考过程都没有直接问我:“你的软连接是用的绝对路径,还是相对路径?”,于是我突然就知道自己错在哪里了。。。

于是上面的问题可以通过设置绝对路径来解决:
同样的,在dir1中创建目录dir2,但是这次创建软连接的时候,要用绝对路径:
jack@ubuntu:~/dir1$ ln -s /home/jack/dir1/dir2 link1

然后操作类似上面,这个就一起帖出来了:
jack@ubuntu:~/dir1$ mv link1 ..
jack@ubuntu:~/dir1$ cd ..

接着试着打开link1,就可以进入了:
jack@ubuntu:~$ cd link1
jack@ubuntu:~/link1$ 

红色的link1就表示已经进入了。

下面是一些理论知识,原文看这里。以下是部分内容:

绝对路径:路径的写法『一定由根目录 / 写起』,例如: /home/jack/dir1/dir2  这个目录。
相对路径:路径的写法『不是由 / 写起』,例如由  cd link1 相对路径意指『相对于目前工作目录的路径!』

相对路径的用途
那么相对路径与绝对路径有什么了不起呀?喝!那可真的是了不起了!假设你写了一个软件, 这个软件共需要三个目录,分别是 etc, bin, man 这三个目录,然而由於不同的人喜欢安装在不同的目录之下, 假设甲安装的目录是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不过乙却喜欢安装在 /home/packages/etc, /home/packages/bin, /home/packages/man 这三个目录中,请问如果需要用到绝对路径的话,那么是否很麻烦呢?是的! 如此一来每个目录下的东西就很难对应的起来!这个时候相对路径的写法就显的特别的重要了!

此外,如果你跟鸟哥一样,喜欢将路径的名字写的很长,好让自己知道那个目录是在干什么的,例如: /cluster/raid/output/taiwan2006/smoke 这个目录,而另一个目录在 /cluster/raid/output/taiwan2006/cctm ,那么我从第一个要到第二个目录去的话,怎么写比较方便? 当然是『 cd ../cctm 』比较方便罗!对吧!

绝对路径的用途
但是对於档名的正确性来说,『绝对路径的正确度要比较好~』。 一般来说,鸟哥会建议你,如果是在写程序 (shell scripts) 来管理系统的条件下,务必使用绝对路径的写法。 怎么说呢?因为绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。 如果使用相对路径在程序当中,则可能由於你运行的工作环境不同,导致一些问题的发生。 

FROM: http://blog.csdn.net/jackbai1990/article/details/7432577
0 0