执行shell脚本时为什么要写成./test.sh,而不是test.sh?

  • 一定要写成 ./test.sh,而不是 test.sh

  • 运行其它二进制的程序也一样!

  • 直接写 test.sh,linux 系统会去 PATH (系统环境)里寻找有没有叫 test.sh 的!

  • 而只有 /bin, /sbin, /usr/bin,/usr/sbin 这些路径是写在了PATH 里!

  • 你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,执行 ./test.sh 就是告诉系统说,就在当前目录找test.sh然后执行它!

你可以用这条命令查看一下你系统的PATH都有哪些

bash 复制代码
echo $PATH

或者打开/etc/profile 这个文件也可以看到

相关推荐
接口不宕机4 分钟前
外贸公司实战:利用 1688API 自动化监控竞品价格,解决采购定价痛点
运维·自动化
Dawn-bit5 分钟前
Linux网络进阶:TCP三次握手和四次挥手与TCP连接状态
linux·服务器·网络·tcp/ip·云计算·智能路由器
旗开得胜马到成功21 分钟前
可信备份技术解析:中科热备如何防范备份数据被攻击
运维·服务器
JavaPub-rodert37 分钟前
使用 Docker 部署 Ollama:Docker Compose 一键运行 DeepSeek-R1 1.5B
运维·docker·容器
蓝速科技40 分钟前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
NJCloud1 小时前
MooseFS 分布式存储部署与高可用架构实践
linux·运维·分布式·架构
晓晓_za8986681 小时前
Geo 优化源码蒸馏词机制:地域词库构建与匹配逻辑详解
运维·tcp/ip·spring·缓存·ci/cd
mounter6251 小时前
将 RDMA 引入容器:Soft-RoCE (RXE) 网络命名空间支持深度解析
linux·linux kernel·kernel·rdma·net namespace
奈斯先生Vector1 小时前
从 127.0.0.1:3080 到插件运行时:DeepSeek Harness 远程开发与版本治理实战
linux·运维·人工智能·ubuntu·aigc
wuminyu2 小时前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++