在linux服务器上,点(.)代表当前目录,两个点(..)代表上一级目录,单个点开头的是隐藏文件,这既是路径规则,也是shell命令的语法基础。
点(.)在路径中的真实含义
当你登录一台Linux服务器,输入ls -l看到一堆文件名,输入cd .不会有任何变化,这就是点在路径中最基础的身份:当前目录,与之对应的cd ..会退到上一级,这是每个运维人员每天都要敲几百次的命令。
单点和双点的区别
- 始终指向当前所在的目录,
cd ./etc和cd etc效果完全一样 - 指向当前目录的父级目录,
cd ../..可以连续向上跳两级 - 在路径末尾的可省略,
./script.sh和script.sh等价,但显式写出来更清晰
实际场景中,你从网上下载一个源码包,解压后进入目录,官方文档让你执行./configure && make,这里的./configure就是明确告诉系统:“在当前目录下找configure这个文件并执行”,如果不加,shell会按PATH环境变量去系统目录里找,大概率找不到。
隐藏文件的判定规则
文件名以开头,比如.bashrc、.gitignore,这类文件在ls默认输出中不显示,需要用ls -a才能看到,这个设计有段历史渊源,最初只是为了避免目录列表太杂乱,后来成了约定俗成的标准,你服务器上的.ssh目录、.env配置文件、.docker缓存目录,全是这个规则。
在Linux服务器上排查问题时,如果发现某个应用配置看起来“没生效”,先想想配置文件名是不是以点开头,用ls -a确认文件确实存在,很多新手在/root下找不到.bashrc,就是因为没用-a参数。
单点(.)作为命令的用法
点不只是路径符号,它是bash内建命令,作用相当于source

。
source命令与点命令的等价关系
source /etc/profile . /etc/profile
上面两条命令效果完全一样,都表示“在当前shell进程中执行这个文件”,关键区别在于,普通执行bash script.sh是开一个子shell跑,脚本里对环境变量的修改不会带回到当前shell,但用或source执行,修改直接生效在当前shell里。
什么时候必须用点?修改了.bashrc后想立即生效,不用重新登录,直接. ~/.bashrc,如果写成bash ~/.bashrc,开个子shell执行完就完了,当前shell的环境变量毫无变化。
脚本执行权限的坑
用./script.sh执行脚本时,要求该文件有执行权限,如果ls -l显示权限是-rw-r--r--,直接跑会报Permission denied,解决办法有三个:
chmod +x script.sh,然后./script.sh执行. script.sh,不需要执行权限,因为点命令是让当前shell读取并执行bash script.sh,同样不依赖执行权限
这个区别在服务器上很实用,有些工具脚本你没改权限,但想快速跑一下,点命令就能绕过权限检查,不过要注意,点命令会让脚本里所有变量和函数残留到当前shell,如果脚本有未定义的变量名,可能会覆盖你现有的环境变量。
点和目录遍历的进阶操作
掌握了基础,再看几个实际运维中高频使用的点和目录相关的命令组合。
删除和复制时的点陷阱
rm -rf ./ # 删除当前目录下所有内容,但保留隐藏文件 rm -rf .[!.] # 删除当前目录下所有隐藏文件 rm -rf .. # 千万不要做的事,会尝试删除父目录
很多服务器故障是手滑执行了rm -rf .加多了空格变成rm -rf . /,直接把根目录删了,业内专家指出,这类事故在运维事故中占比相当高,多数情况是路径变量为空时误删,防御措施很简单:删除前先

pwd确认位置,用ls -a,再把命令里的点展开成绝对路径。
复制时也有类似情况,cp -a /data/app/. /backup/app/表示复制/data/app目录下的所有内容(含隐藏文件)到目标目录,目标目录无需事先创建同名子目录,如果不加,cp -a /data/app /backup/app会把app这个目录本身也复制过去,结果变成/backup/app/app。
软链接和相对路径中点的作用
创建软链接时,点决定了链接的指向基准:
ln -s ../nginx.conf /etc/nginx/conf.d/default.conf
这里../nginx.conf是相对于链接文件所在位置(/etc/nginx/conf.d/)的上一级来解析的,如果写错了点的位置,链接会变成断链,排查时用ls -l看箭头指向,再用readlink -f解析出真实路径。
点开头的特殊目录:.git和.docker
在linux服务器上部署项目,最常见带点的目录就是.git,它存着整个仓库的历史记录、分支信息、配置,很多人直接把整个项目目录打包拷贝到另一台服务器,发现新服务器上git status显示一堆改动,就是因为.git里的路径信息是绝对的或者被污染了。
另一个常见的是.docker目录,存放Docker的构建缓存、密钥、配置文件,清理时用docker system prune配合删除~/.docker下的缓存文件,能释放不少磁盘空间。
处理点目录的备份策略
备份项目代码时,默认的tar -czf backup.tar.gz project/会把.git目录也打包进去,好处是保留版本历史,坏处是备份包体积可能大一倍,如果只想备份源码,可以:
tar -czf backup.tar.gz --exclude='.git' --exclude='.env' project/
这种操作在迁移WordPress站点或Node.js应用时很常见,.env文件通常包含数据库密码,不该进备份包。

点在shell变量和环境配置中的用法
点还有几个和路径无关的作用,虽然不常提,但看到了要认识。
点号匹配任意单个字符
在正则表达式和通配符中,匹配任意一个字符,比如ls file?.txt的是shell通配符匹配任意单个字符,而grep 'file.'里的点则是正则表达式,同样匹配任意字符,要匹配真正的点需要转义“.
排查日志时,grep '2026.01.' access.log可以精准匹配2026年1月的日期,不加转义会错误匹配到其他字符。
点号表示版本号分层
服务器上软件的版本号里点用来分隔主版本、次版本、修订号,比如nginx/1.24.0,判断是否需要升级时,重点看主版本和次版本的变化,修订号通常是bug修复,行业共识认为,生产环境升级应跨一个大版本后再观察社区反馈,不要追最新。
常见问题解答:linux服务器上点(.)的含义
为什么在linux服务器上执行脚本要加./?
因为当前目录通常不在PATH环境变量里,直接输入script.sh,shell只会去/usr/bin、/bin等系统路径里找,加上显式指定路径,告诉shell就在当前目录里找,有些人是出于安全考虑不把当前目录加入PATH,防止目录里混入恶意同名命令。
点命令和source命令到底用哪个?
两者完全等价,用哪个看习惯,bash手册里写的是,但source可读性更好,脚本里如果要复用,建议统一用source,避免其他shell(如zsh)对点命令的解析出现细微差异。
.bashrc和.profile的区别是什么?
.bashrc是每次打开新的bash终端时执行,.profile是登录shell时执行,在服务器上通过SSH登录,通常先读.profile再读.bashrc,修改环境变量后想立即生效,用. ~/.bashrc即可,这个操作就是点命令在linux服务器上最常见的实战场景。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/820822.html


评论列表(2条)
读了这篇文章,我深有感触。作者对比如的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于比如的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!