该.profile
日期可以追溯到原始的Bourne外壳,即sh
。由于GNU Shell bash
是Bourne Shell的超集(取决于其选项),因此两个Shell可以使用相同的启动文件。也就是说,只要仅sh
输入命令.profile
例如,alias
是的有效内置命令,bash
但未知sh
。因此,如果您.profile
的主目录中只有一个并alias
在其中放置一条语句,sh
则会抱怨。因此,有一个特定于bash的文件,其中包含shell初始化命令,当且仅当不存在.profile
文件时,bash才会读取该文件。
实际上,在某些安装中这有点过分简化,而且我对Fedora并不熟悉。在bash下,/etc/profile
shell将在主目录中的任何文件之前读取它。如果有系统范围的初始化脚本,它通常会说类似
if there is a $HOME/.profile:
source it
elseif bash is my shell and there is a $HOME/.bash_profile:
source that
为什么这样呢?尝试兼容数十种Shell方言。为什么教程是这样写的?Bourne外壳不再经常使用,有些人甚至不知道bash之外还有其他类似Bourne的外壳。即使使用(有限的)Bourne语法实现更大的跨平台兼容性,它也经常dash
以POSIX兼容模式由bash 运行或由bash运行。确实,实际的Bourne shell源可能是Unix System V的版权组件,该组件现在似乎是Novell的财产,但是我不知道他们在做什么(如果有的话)。
对于初次使用的用户,请选择其中一个$HOME/.profile
或$HOME/.bash_profile
两个,但不要同时使用。既然您已经在.bash_profile
使用它,因为它可能包含安装所需的系统特定的东西。