You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

~/.bashrc及bash脚本中句号(.)的作用是什么?

嘿,这个问题问得特别好!刚接触bash脚本的时候,确实很容易把这个单独的.和表示当前目录的./搞混,我来给你详细拆解一下:

一、脚本里的.到底是啥?

在bash里,单独的.是**source命令的别名**,它的核心作用是:在当前shell进程中执行指定脚本里的命令,而不是启动一个新的子shell来执行。

为啥要这么做?举个例子:如果脚本里定义了环境变量、别名或者自定义函数,要是用普通的sh script.sh或者./script.sh执行,这些变量/函数只会存在于临时启动的子shell里,脚本执行完子shell就消失了,当前shell根本拿不到这些修改。但用.或者source执行的话,所有操作都会直接作用在当前shell环境里,修改会立刻生效并保留。

回到你给的代码片段:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
. /etc/bash_completion

这段代码的核心就是用.加载bash补全脚本——不管是/usr/share下的还是/etc下的,加载之后,当前shell就能立刻用上bash的命令补全功能(比如按Tab键补全命令、参数),不用重启shell就能生效。

二、~/.bashrc里的.有啥用?

~/.bashrc是bash启动时会自动加载的用户配置文件,里面的.同样是source的别名,主要用在这几个场景:

  • 加载其他配置文件:比如有些系统会把用户的环境变量、单独的别名集合放在~/.bash_profile或者~/.bash_aliases里,你会在.bashrc里看到类似. ~/.bash_profile的写法,这样就能把其他文件里的配置统一导入到当前shell环境,不用重复编写相同配置。
  • 加载自定义脚本/函数:如果你自己写了个存放专属别名、工具函数的脚本(比如~/.my_bash_tools),用.把它加载到.bashrc里,每次打开终端,这些自定义内容都会自动生效。
  • 复用配置逻辑:把一些通用的配置抽成单独的文件,用.导入,能让.bashrc的结构更简洁,后续维护也更方便。

最后再划个重点:别把单独的.和./搞混!./script.sh里的./才是表示当前目录,用来执行当前目录下的脚本;而单独的.是一个shell命令,和source完全等价。

内容的提问来源于stack exchange,提问作者Ajil Raju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:45:54