为什么我的.sh命令必须在前面加上./*****.sh才能执行?

musashi 2004-09-16 09:55:41
假设一个sh命令:start.sh
那么我进入这个命令所在的路径,然后输入:
start.sh
却不能执行,
正确方法是:
sh start.sh 可以执行,
./start.sh 也可以执行,为什么?

...全文
1075 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tycool 2004-09-17
  • 打赏
  • 举报
回复
学到一招!原来只知道这样用,忘了有没有看过资料
haha886 2004-09-17
  • 打赏
  • 举报
回复
好像都是执行那些path里面的 没有的 必须全路径
XChinux 2004-09-17
  • 打赏
  • 举报
回复
据说因为有当前路径在$PATH中的话,不安全,所以还是用./a.out来的好
ccwwcsdnc 2004-09-16
  • 打赏
  • 举报
回复
./a.out
./即当前目录,../上一级目录。
你不可能把所有目录都加到路径变量$PATH中,所以执行当前目录下的文件时用./,这是习惯。
pacman2000 2004-09-16
  • 打赏
  • 举报
回复
在redhat里,默认情况下当前目录不在PATH搜索路径中。你可以修改$HOME/.bash_profile的PATH设置,把当前路径加上。
zhouqi66 2004-09-16
  • 打赏
  • 举报
回复
同意楼上的,Linux下的执行程序路径是由$PATH指定的,不包括当前路径,所以要用./指定.
suowei1979 2004-09-16
  • 打赏
  • 举报
回复
Linux不像DOS,默认的先搜索当前路径,而Linux一般情况下是按$PATH变量去搜索的,
用户的当前路径是不包含在此变量中的,所以要执行当前路径下的start.sh(必须是有可执行属性)文件,需要明示其路径,用相对路径如./start.sh或绝对路径
azoth 2004-09-16
  • 打赏
  • 举报
回复
假设你的文件在//test/start.sh
运行的话就
./start.sh
/test/start.sh
sh start.sh
3种方法
XChinux 2004-09-16
  • 打赏
  • 举报
回复
Linux不像DOS,默认的先搜索当前路径,而Linux一般情况下是按$PATH变量去搜索的,
用户的当前路径是不包含在此变量中的,所以要执行当前路径下的start.sh(必须是有可执行属性)文件,需要明示其路径,用相对路径如./start.sh或绝对路径
zdmaster 2004-09-16
  • 打赏
  • 举报
回复
看看是不是登录用户的配置文件有问题,是不是没有默认的shell。
我也是刚学,好像记得书上说过,不知道对不对?

19,618

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧