绝对路径与相对路径
绝对路径和相对路径在shell环境中经常遇到,各有用处。
什么是绝对路径(Absolute Pathname)?
- 绝对路径必定由“/”开头
- 绝对路径是为档案/文件的所在位置做指向
- 在任何时候,都可以用绝对路径来找到我们想要的文件
绝对路径举例:
/usr/share/src
/tmp
什么是相对路径(Relative Pathnames)?
- 相对路径(Relative Pathnames)不由“/”开头
- 相对路径(Relative Pathnames)是相对于现在目前所在的位置,为目的地指向
- 通常相对路径(Relative Pathnames)比绝对路径短一点,可以当成我们迅速找到文件/档案的捷径
相对路径举例:
../test root等
读者或许心中会有疑问,在给出相对路径时,系统如何识别其相应的绝对路径呢?
事实上,相对路径是根据PATH环境变量来查找绝对路径的。
举例来说,我目前在 /home/test 这个 test 使用者的家目录中,我想要看看里面的 .bashrc 这个档案的数据,使用的是 more 这个指令,而这个指令在 /bin/more 当中。通常的命令写法是:
$ more .bashrc
而由于PATH变量的值为:
$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user/bin
在执行more命令时,shell会根据PATH变量的路径中顺序查找,一旦查找匹配到(此例匹配到的应该是/bin/more),便执行/bin/more .bashrc。这便是执行命令时由相对路径查找绝对路径的过程。
所以我们就可以理解为什么执行当前目录下的可执行程序应该用的格式是:
$ ./test.sh
而不是直接用test.sh了。因为通常PATH变量不包含当前路径。如果不加./会导致相对路径格式的命令找不到绝对路径。