LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1113|回复: 4

执行脚本前为什么要加./

[复制链接]
发表于 2009-5-20 01:28:07 | 显示全部楼层 |阅读模式
为什么我的redhat linux
上执行脚本时必烦要加./ ,是不是环境变量没设好,请高手指点下,谢谢
发表于 2009-5-20 03:15:44 | 显示全部楼层
export PATH=$PATH:.
就可以了。
在搜索路径中没有“当前目录”(.),所以必须要指定。
事实上,在所有没有在$PATH中列出的路径下执行命令(包括脚本和二进制可执行文件)都要指定路径。
回复 支持 反对

使用道具 举报

发表于 2009-5-20 04:05:44 | 显示全部楼层
如果你用的是root用户,默认就要加./来运行当前目录下的执行文件,这样做的目的是安全。避免被黑客在当前目录下放入名为cp ls ps这类的带木马程序时,被root用户执行。
普通用户则没有这个限制。
如果你希望root用户也支持当前目录程序不输入路径执行,可以新建或修改文件 /root/.bash_profile
在末尾加一行
export PATH=$PATH:.
回复 支持 反对

使用道具 举报

发表于 2009-5-20 09:43:27 | 显示全部楼层
Linux不是dos
我想多数发行版默认都不会把当前目录加到PATH,不管是root还是普通用户
自己写的脚本可以放在~/bin里,并确定已经在PATH里
$ echo $PATH
/home/liu/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
Linux有清晰的目录组织,可执行程序都在bin,sbin里,或者有符号连接到实际位置
极少数情况要运行不在PATH里的程序,如安装个显卡驱动之类的,#./可执行程序 或者 #sh 可执行程序(脚本)
回复 支持 反对

使用道具 举报

发表于 2009-5-20 10:01:09 | 显示全部楼层
养成正确的习惯远比贪图一时的方便来得重要。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表