有什么作用。.bashrc实际做什么?


13

当我输入一个eg。在我的.bashrc文件中添加了一个新的别名,我不能立即在该终端窗口中使用它,直到最近我还以为必须重新启动终端才能重新加载.bashrc文件。然后我发现某个地方,如果我写

. .bashrc

这将.bashrc在当前窗口中重新加载文件,而我不必重新启动。这可行,但实际上是什么情况?为什么这会重新加载.bashrc文件?


1
使用.,您可以“源”文件。这意味着它正在执行的基本
明镜Hochstapler


1
@丹 虽然答案是相同的,但这个问题对我来说听起来很独特。
Calimo 2014年

1
@Dan D.这个问题更多地是关于的想法。直到现在我一直在想作为当前目录的简写,..作为父目录的简写。我没意识到是来源的别名(对我而言这又是一个全新的概念)。如果有人来这里想知道我的区别,我发现执行bash脚本和采购bash脚本什么区别?非常有帮助。
Spade

Answers:


17

因为.是命令。

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

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

还要注意,./ 的行为source取决于Bourne Again shell是否以其POSIX兼容模式运行。(同样,这与其他shell一样,尽管它们的非标准行为彼此不相同。例如,对于Z Shell,存在一种预编译的shell脚本机制,并且在搜索路径处理方面有source细微差别.。Korn .再例如,shell 将运行shell函数。)

~/.bashrc仅仅是文件的内容之一(其内容取决于外壳程序的调用方式)是在外壳程序启动时自动获取的。没有什么可以禁止手动获取的。尽管如果它的动作不是幂等的,则此后您可能需要做一些修复工作。

进一步阅读


1

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


1

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

source: source filename [arguments]
    Execute commands from a file in the current shell.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.