日期:2014-05-16  浏览次数:20818 次

linux执行脚本问题
各位老师:
     我使用的是linux(redflag),在脚本当前目录下执行脚本,必须加上./才能执行,比如执行a.sh,
需要执行./a.sh,直接执行a.sh就执行不了,这是什么原因?感谢各位。

------解决方案--------------------
当前路径不在系统环境变量里,如果把当前路径加到PATH环境变量中就不需要./了
------解决方案--------------------
楼上的解释很对,
./表示在当前搜索目录下执行:

不过,显然有失严整
1 首先你应该理解这个过程
你现在运行的是shell,那么你在和shell对话的过程,其实就是shell解释你的输入过程,那么,shell如何知道你的输入有意义呢,我们预先在shell的变量path里面增加了shell的搜索路径,你只要一输入解释,shell就会去先在路径下找有没有你输入的命令的应用。
2 所以 就像楼上所说
如果你的当前的路径如果不含在变量PATH里面,首先,shell就根本找不到你输入的这个命令:a.sh
也就是你自己说发现的那样,根本无法执行
你如果把你的路径加到你的PATH变量里面,ok,显然你可以执行了,和你加不加./没关系
3 如果再严谨考虑一下
如果不加./,那么很有可能在路径变量path里面有一个和你一样的命令也叫a.sh
他很可能比你的这个a要先执行,这时候,你也许会发出更怪的赞叹,这么是这个结果。。。。。
当然,这是你无法预料的结果

所以,综上,必须加./
------解决方案--------------------
export PATH=$PATH:.

------解决方案--------------------
在环境变量里面最前面加一个点号吧(.)