Linux Bash Shell绝对路径与相对路径

运维 系统运维
在使用 bash 还有另一个困扰,就是当你的 PATH 没有设定完整的时候,下达指令都是要以『一长列的指令连带根目录都要列出来』,呵呵那就是绝对路径的设定法啦!

其实,在使用 Linux Bash Shell还有另一个困扰,就是当你的 PATH 没有设定完整的时候,下达指令都是要以『一长列的指令连带根目录都要列出来』,呵呵那就是绝对路径的设定法啦!基本上,这个『绝对路径』与『相对路径』的观念是很重要的!否则你将常常会找不到档案说!

所谓的『绝对路径』就是以根目录开始写入到档案的一种命令写定方法,举例来说,我目前在 /home/test 这个 test 使用者的家目录中,我想要看看里面的 .bashrc 这个档案的资料,使用的是 more 这个指令,而这个指令在 /bin/more 当中,则正确的下达指令的方法为:
[test @tset test]# /bin/more .bashrc <==我在的目录为 /home/test !这是绝对路径写法!
而如果你还记得我们在 档案系统指令 那一篇文章中提到的观念的话,那么应该记得使用 ls -al 时会出现两个一定存在的目录,分别是『.』与『..』,分别代表是『这个路径』,与『上一层路径』!
[test @tset test]# ls -al
total 728
drwx------3 vbirdvbird4096 May 19 14:53 . <==這一層路徑的屬性說明
drwxr-xr-x3 root root 4096 May 5 16:50 .. <==上一層路徑的屬性說明
以下略!

所以说,要执行上一层目录中的命令,可以下达『 cd ../command 』那个 command 指的是存在的可执行档!那么我因为在 /home/test 里面,距离 /bin 有两层上层目录,所以我要使用 /bin/more 这个执行档,并且使用相对路径的方法,就必须使用:
[test @tset test]# ../../bin/more .bashrc<==一层一层回到根目录,在进入 /bin 的写法!相对路径
这种相对路径的方法相当广泛的被运用于 script 当中,这是因为如前面提到的,每个人的安装预设的目录都不相同,则使用相对路径的话,很容易就可以找到套件之间相依软体或者是设定档案的相关性!
 
关于Linux Bash Shell路径搜寻的问题!为何不执行目前所在目录下的档案?咦!刚刚不是提到『.』与『..』吗?那么那个『 . 』是干嘛用的?!眼尖的朋友应该已经发现了,就是『我在执行档案的时候,基本上,并不会主动搜寻目前目录下的档案』举个例子来说,我安装的 squid 这个执行档在 /usr/local/squid/bin/squid 这个档案,然而我在 /usr/local/squid/bin 下达 squid 的时候,系统会告诉你『查不到这个档案!』真是见鬼了!明明有这个档案的呀!这是因为系统预设的 PATH (路径)并没有执行目前目录下的设定,也就是『.』这个路径!你可以使用『 echo $PATH 』看看,就可以知道为什么了!那么为何不要设定这个路径呢?这是因为『安全』的考量。

由于系统预设是允许任何人在 /tmp 底下写入任何档案的,那么万一有居心不良的使用者或者是 Cracker 入侵你的电脑,并在你的 /tmp 里头埋了一个小木马,并取名为 ls ,好了,改天你以 root 身份登入后,到 /tmp 底下,并执行 ls ,你看会有什么结果?!这个 /tmp/ls 由其他身份的人来执行或许没有问题,但是由 root 来执行却可能会导致 Cracker 所乐意见到的结果!那晓得为何了吧?!当然啰!您还是可以选择在 ~/.bashrc 当中设定你的 . 在你的 PATH 当中,不过并不这么建议就是了!

好了,由于系统预设并不主动搜寻目前目录下的执行档,那么你应该如何执行『目前目录下的执行档』呢?很简单呀!就是以相对路径的观念,由于『 .. 』是上层,而『 . 』是这一层,所以要执行这一层目录的命令就使用『 ./command 』即可!例如你的 /usr/local/squid/bin 底下执行 squid 则可以写成:
[test @tset bin]# ./squid  <==以相对路径的观念来看!在本目录下达的指令写法!
请特别留意这方面的问题!『新手特别容易犯这个错误呢!』

【编辑推荐】

  1. Linux Bash命令关于程序调试详解 
  2. Linux Bash命令关于快捷键应用
  3. Linux Bash Shell系统的应用详解
  4. Linux Bash具体安装步骤及使用介绍
  5. Linux Bash命令查询相关事件详解
     
责任编辑:chenqingxiang 来源: Linux社区
相关推荐

2011-07-11 13:29:03

JAVA

2010-03-18 08:48:30

Python入门

2011-06-23 15:33:24

SEO

2009-08-06 18:31:57

C#相对路径绝对路径

2022-08-29 14:11:10

Linux绝对路径相对路径

2022-11-16 10:13:29

Linux相对路径绝对路径

2022-11-04 10:49:56

Linux文件

2021-07-29 20:28:24

静态代码Hdfs

2021-08-04 10:15:14

Go路径语言

2014-11-10 11:49:01

QCMSQCMS漏洞安全漏洞

2009-08-07 13:24:35

C#获取相对路径

2009-08-07 13:38:18

C#文件相对路径

2022-04-24 15:33:38

鸿蒙开发操作系统

2009-08-07 13:16:27

c#相对路径写法

2023-10-22 08:39:13

Linux目录切换

2015-03-30 15:45:41

javascripta标签绝对路径方法

2019-08-30 09:54:39

LinuxC语言文本编辑器

2009-08-06 18:03:21

C#相对路径

2009-08-27 10:40:56

Java路径

2022-08-26 13:56:30

模块JavaScript
点赞
收藏

51CTO技术栈公众号