Linux系统中的/etc/profile, /etc/profile.d, ~/.bash_profile和~/.bashrc文件
当在linux系统中登录bash shell来作为登录shell启动,将查找4个不同的启动文件来处理其中的命令:
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bash_login
- $HOME/.profile
/etc/profile文件
/etc/profile文件时bash shell的主默认启动文件。当你登录Linx系统时bash将执行/etc/profile启动文件中的命令
其中在文件底部的export命令:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
将确保这些环境变量对登录shell生成的子进程都可用。
有时修改了/etc/profile文件后,输入ls命令会报错:
-bash: ls: command not found
这时在命令行中执行以下命令:
export PATH=/bin:/usr/bin:$PATH
就不会报错了。
$HOME启动文件
其余3个启动文件具备相同的功能—提供特定用户的启动文件用于定义特定于用户的环境变量。大多数Linux发行版都只有这3者之一:
-
$HOME/.bash_profile
-
$HOME/.bash_login
-
$HOME/.profile
注意,这3个文件都是以点号开头,表示它们都是隐藏文件。
/etc/profile是永久性的环境变量,设置的是全局变量,当一个用户登录linux系统或者Login shell启动时,首先要确保执行的启动脚本就是/etc/profile,在这个脚本中设置的一些重要的变量有: -
PATH:预设可执行文件或命令的搜索路径
-
USER:用户登录时使用的用户名
-
LOGNAME:其值就是$USER
-
HOSTNAME:所使用的主机名
-
MAIL:存放的用户电子邮件的邮箱
-
HISTSIZE:历史记录的行数
-
INPUTRC:存放针对键盘热键的信息
/etc/profile.d目录中存放的是一些应用程序所需的启动脚本,其中包括了颜色、语言、less、vim以及which等命令的一些附加设置。
这些脚本文件之所以能够被自动执行,是因为在/etc/profile中使用一个for循环语句来调用这些脚本,这些脚本文件就是用来设置一些变量和运行一些初始化过程。
**~/.bash_profile:**每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件只执行一次,默认情况下,设置一些环境变量,执行用户的.bashrc文件。只对单个用户生效,设定的为局部变量。
**~/.bashrc:**该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。