..bashrc 实际上起什么作用?

..bashrc 实际上起什么作用?

当我在文件中输入一个新别名时,.bashrc我无法立即在终端窗口中使用它,直到最近我才想到必须重新启动终端才能重新加载文件.bashrc。然后我在某处发现,如果我写

. .bashrc

这将.bashrc在当前窗口中重新加载文件,我无需重新启动。这确实有效,但实际上发生了什么?为什么这会重新加载文件.bashrc

答案1

因为.是一个命令。

它是一个 shell 内置命令,它读取命名的文件并在当前 shell 进程中执行其中的命令。

Bourne Again shell 也有source此命令的同义词。但这是 Bashism(Bourne Again shell 从 C Shell 中获取的)。尽管 Bourne Again shell 与 TENEX C Shell、Z Shell 和其他 Shell(但不是 Korn shell,请注意)共享 Bashism。单一 UNIX 规范仅标准化.

.还要注意, /的行为source会根据 Bourne Again shell 是否以 POSIX 兼容模式运行而发生微妙变化。(这与其他 shell 类似,尽管它们的非标准行为彼此并不相同。例如,对于 Z Shell,有一个预编译的 shell 脚本机制,并且在其搜索路径处理方面source略有不同.。另一个例子是 Korn shell.将运行 shell 函数。)

~/.bashrc只是几个文件中的一个,其内容(取决于 shell 进程的调用方式)自动来源在 shell 启动时。没有什么可以阻止它手动来源。尽管如果它的操作不是幂等的,你之后可能需要做一些修复工作。

进一步阅读

答案2

help .会告诉你:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

. .bashrc执行(源)文件.bashrc,使得对文件所做的更改在当前会话中可用。

默认情况下,~/.bashrc将在登录时读取。

.是 的同义词source

答案3

该命令与执行文件的命令.相同。这会将您定义的所有别名以及任何其他 shell 设置/变量添加到当前环境中。来自的帮助页面:source.bashrcsource

source: source filename [arguments]
    Execute commands from a file in the current shell.

相关内容