Linux 下/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 的作用及区别

该文件通常包含一些全局变量和环境变量的设置,通常用于定义当前用户的个性化环境变量、别名等。

在 Linux 系统中,有几个文件非常重要,它们分别是 /etc/profile、/etc/bashrc、~/.bash_profile 和 ~/.bashrc。这些文件都与 Bash Shell 有关,下面将详细介绍它们的作用及区别。

/etc/profile

/etc/profile 是系统级别的 Bash 配置文件,它对所有用户生效。当用户登录系统时,会首先执行该文件中的命令。该文件通常包含一些全局变量和环境变量的设置,并且可以在其中定义一些全局函数和别名等。

例如,在 /etc/profile 中添加以下内容:

“`

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:$PATH

这样就可以设置系统级别的 Java 环境变量了。

/etc/bashrc

与 /etc/profile 类似,/etc/bashrc 也是一个系统级别的 Bash 配置文件,在每个新开启的交互式 Bash Shell 中都会被读取并执行。不同之处在于 /etc/bashrc 主要用于定义全局性质的 Bash 函数和别名等。

例如,在 /etc/bashrc 中添加以下内容:

alias ll=’ls -alF’

alias grep=’grep –color=auto’

这样就可以给所有用户设置一个 ll 命令来显示当前目录下所有内容,并且让 grep 命令支持颜色输出。

~/.bash_profile

~/.bash_profile 是用户级别的 Bash 配置文件,它只对当前用户生效。当用户登录时,该文件会被读取并执行。通常用于定义当前用户的个性化环境变量、别名等。

例如,在 ~/.bash_profile 中添加以下内容:

Linux 下/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 的作用及区别

export PATH=$HOME/bin:$PATH

alias rm=’rm -i’

这样就可以将 ~/bin 目录添加到系统 PATH 环境变量中,并且让 rm 命令始终提示确认删除。

~/.bashrc

与 ~/.bash_profile 类似,~/.bashrc 也是一个用户级别的 Bash 配置文件,但它不是在登录时被执行,而是在每次打开新的 Shell 时被读取并执行。主要用于定义一些个性化命令和函数等。

例如,在 ~/.bashrc 中添加以下内容:

alias c=’clear’

function lsd() {

ls -d */

}

这样就可以给自己设置一个 c 命令来清空屏幕,并且定义了一个 lsd 函数来列出所有目录(不包括子目录)。

区别和总结

– /etc/profile 和 /etc/bashrc 是系统级别的配置文件,/etc/profile 在登录时执行一次,/etc/bashrc 在每个新开启的交互式 Bash Shell 中都会被读取并执行。

– ~/.bash_profile 和 ~/.bashrc 是用户级别的配置文件,~/.bash_profile 在登录时执行一次,~/.bashrc 在每次打开新的 Shell 时都会被读取并执行。

– /etc/profile 和 ~/.bash_profile 主要用于定义全局性质的环境变量和函数等,/etc/bashrc 和 ~/.bashrc 主要用于定义个性化命令和函数等。

综上所述,在 Linux 系统中,这几个 Bash 配置文件各有其作用。系统管理员可以通过修改 /etc/profile 和 /etc/bashrc 文件来为所有用户设置全局变量、环境变量和函数等;而用户可以通过修改自己的 ~/.bash_profile 和 ~/.bashrc 文件来定义个性化命令、别名和函数等。这些配置文件让我们能够更好地掌控自己的工作环境,并提高效率。

最后附上本篇文章的 TAGS:Linux、Bash、Shell、配置文件、环境变量