Ubuntu 16.04 中 bash shell 的环境变量

Ubuntu 16.04 中 bash shell 的环境变量

一、bash shell 的分类
1、login shell 和 no-login shell

“登录 shell”代表用户登入,比如使用 ” su - ” 命令,或者用 ssh 连接到某一个服务器上。
“非登录 shell”的情况是我们在终端下直接输入 bash 或者 bash -c “cmd” 来启动的 shell。

2、interactive shell 和 non-interactive shell

interactive shell 是交互式 shell, 顾名思义就是用来和用户交互的, 提供了命令提示符可以输入命令。
non-interactive shell 是非交互式 shell,一般是通过 bash -c “cmd” 来执行的 shell。

二、bash shell 启动文件加载顺序
1、交互式登录shell 或者 带有 –login 的非交互式登录 shell

首先读取执行 /etc/profile 中的命令,会按依次查找 ~/.bash_profile ~/.bash_login ~/.profile,并执行找到的第一个文件中命令。当执行内置的 exit 命令时,bash 读取 ~/.bash_logout 。

2、交互式非登录shell

bash 读取执行 ~/.bashrc 中的命令。

3、非交互式非登录 shell

它在环境中查找变量 BASH_ENV,如果它存在则将它的值展开,使用展开的值作为一个文件的名称,读取并执行。此时没有使用 PATH 变量的值来搜索那个文件名。

4、以 sh 名称启动

它首先尝试读取并执行文件 /etc/profile 和 ~/.profile 中的命令,查找环境变量 ENV,如果有定义的话就扩展它的值,然后使用扩展后的值作为要读取和执行的文件的名称。

各配置文件说明

/etc/profile
操作系统定制用户环境时使用的第一个文件,为系统的每个用户设置环境信息。当用户第一次登录时,该文件被执行。它收集 /etc/profile.d/* 中的 shell 设置,并加载 /etc/bash.bashrc 文件。

/etc/enviroment
在登录时操作系统使用的第二个文件,系统在读取用户自己的 profile 前,设置环境文件的环境变量。

/etc/bash.bashrc
初始化 bash 的设置, 如 bash 的代码补全、别名、颜色。为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取。

~/.bash_profile
每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bash_login
不推荐使用这个,这些不会影响图形界面。

~/.profile
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的 .bashrc文件。

~/.bashrc
初始化用户的 bash 设置,当登录时以及每次打开新的shell时,该该文件被读取。不推荐把配置放到这里,因为每开一个shell,这个文件会读取一次,效率上讲不好。

~/.bash_logout
当一个登录 shell 退出时, bash 读取并执行文件 ~/.bash_logout 中的命令。

你可能感兴趣的:(Linux)