看板Linux
标 题Re: 请问redhat里要执行一个程式一定要在前面加./吗??
发信站奇摩大摩域 (Tue Mar 21 19:33:36 2000)
转信站Ptt!bbs.ee.ntu!news.ntu!news.mcu!news.cs.nthu!bbsnews.kimo.com.tw!Kimo
※ 引述《[email protected] (松鼠)》之铭言:
> 我不知道是不是设定上的问题还是一定得这样
> 就是 我的redhat linux 6.1要执行程式一定要打 ./xxxxx
> 像要执行 mamed就得打 ./named
> 有没有办法直接打 named就可以执行呢???
先来个基本观念:
当你执行 a.out 时,系统会去 PATH 环境变数内的路径找找是否有 a.out
这个档案。若是有的话就执行它。找不到的话,就出现 command not found
的讯息。
注意的是,系统并没有 WINDOWS/DOS 系统的特性,会先去找找看目前工作目录
是否有这个档案,而若是找到的话并执行它的特性。
所以说,请使用绝对路径,或者是 ./a.out 告知要执行目前工作目录内的
a.out 档案。
OK... 我执行 set | grep "PATH" 得到我目前的 PATH 环境变数为:
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kenduest/bin
而若是我目前工作目录是在 /tmp 目录内,该目录内有个 hello 的执行
档案。当我键入 hello 的话,那会出现 command not found 的错误讯息,
因为 jello 这个执行档案所在目录并没有在 PATH 环境变数设定的路径内。
若是您希望可以很随性的可以执行目前工作目录的档案,不希望因为您要
执行的档案其路径并没有设定在 PATH 环境变数内的话,那可以在 PATH
环境变数内补上 . 的路径,像是这样子:
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/kenduest/bin:.
那以使用 bash 当 shell 程式的使用者,可以在 .bash_profile 档案内
加入: export PATH=$PATH:. 如此就可以满足您的需求.....
不过试问一下,您会不会问到为何不预设把 . 加入到 PATH 环境变数内呢....
其实这是基於 "安全性" 的考量。
比方你把 . 路径加入到 PATH 环境变数内,而有个人在 /tmp 目录下建立一个
shell script 档案叫做 la ,内容如下:
#!/bin/sh
rm -rf ~
有的人打字很快,很有可能不小心在 /tmp 目录下键入 ls 误打为
la ,你想想看,会发生啥事情.... 自己家整个目录都被自己砍了 @_@
所以说,为了避免误执行到他人的木马程式, . 这个符号还是不要
摆在 PATH 环境变数内.... 再来就是,真的要把 . 加入到 PATH,
请放置於 PATH 後段,而不要在前段。
export .:$PATH 这个方式极危险,只要随便有个人在 /tmp 目录下放个
上面的 shell script,档名为 ls ,那在 /tmp 下达 ls 就......
--
相信一种真诚存在於心与心之间...
--
--
※ Origin: 奇摩 大摩域 <telnet://bbs.kimo.com.tw>
◆ From: 139.175.192.20