[问题]为什么运行命令的时候要打路径名?

为当前最终发行版之前的所有版本提供支持
回复
drongh
帖子: 1038
注册时间: 2007-01-10 9:32
送出感谢: 4 次
接收感谢: 5 次

[问题]为什么运行命令的时候要打路径名?

#1

帖子 drongh » 2007-04-05 17:44

为什么运行命令的时候要打路径名,比如:在我的家目录下有个执行文件qq,我运行的时候一定要打./qq,而不是qq,
然而拷贝文件的时候却不要,比如:在~/test/下有个文件是file,同时还有个目录是dir,当前目录为~/test/,把file拷贝到dir下时,就可下命令: cp file dir,或者cp file ./dir 这两个命令都可以,大家帮忙解释一下!!!
上次由 drongh 在 2007-04-05 20:00,总共编辑 1 次。
applnk
帖子: 1485
注册时间: 2007-02-13 15:24
来自: 地球
送出感谢: 0
接收感谢: 0

#2

帖子 applnk » 2007-04-05 18:03

这个。。。。。。可能是怕你把文件名起名像命令导致混乱
头像
gnix_oag
帖子: 1994
注册时间: 2005-05-19 18:38
来自: 湖南永州
送出感谢: 0
接收感谢: 1 次
联系:

#3

帖子 gnix_oag » 2007-04-05 18:57

这是为了安全,
如果有个病毒伪装成 ls
则用 ls 不会执行当前目录的这个病毒
它会从 $PATH 中的目录找这个命令,
没找到则提示没有这个命令,
你如你用 ./ls 则会执行当前目录的 ls

也就是说执行非 $PATH 中的命令必须要输入路径
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#4

帖子 BigSnake.NET » 2007-04-05 18:59

出于安全的考虑
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#5

帖子 bones7456 » 2007-04-05 19:04

如果需要的话,可以将~目录设置到$PATH里面去,这样就可以直接输入qq运行了。
关注我的blog: ε==3
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System
送出感谢: 0
接收感谢: 0

Re: [问题]为什么运行命令的时候要打路径名?

#6

帖子 5451vs5451 » 2007-04-05 19:22

举个例子,删除当前路径下的 abc 这个文件:

代码: 全选

rm abc
当 shell 看到 rm 这个命令名时,它是到 PATH 环境变量中列出的一系列路径中寻找名为 rm 的可执行文件;而当看到 abc 时,只是简单地将它作为参数传递个 rm 命令。shell 并不关心 abc 这个文件在哪儿。到哪儿去找文件完全由调用的命令来决定。绝大多数情况下,命令会在当前路径下寻找文件,但也有例外,例如 pon 和 poff 命令会到 /etc/ppp/peers 下寻找配置文件。

既然 shell 是到 PATH 环境变量中的路径下寻找命令,那么如果把 ./ 添加到 PATH 的末尾,则 shell 也可以找到当前路径下的命令而不必输入 ./ 。但这是不推荐的,因为无法限制用户对 ./ 的访问权限,从而增加了执行恶意代码的风险。
回复

回到 “老旧版本支持”