bash环境变量配置文件

bash环境变量配置文件,第1张

bash环境变量配置文件 1、bash 的两种属性 1.1 登录属性

  登录式:是需要用户名、密码登录后才能进入的shell(或者通过–login”选项生成的shell)。

  1. 直接通过终端输入账号密码登录
  2. 使用 “su - UserName” 切换的用户

  非登录式:不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。会继承上一个shell的全部变量。

  1. su UserName
  2. 图形界面下打开的终端
  3. 执行脚本 (当我们执行脚本的时候.我们就已经进入到了一个子shell)
  4. 任何其它的bash实例

  执行exit命令,退出一个shell(登录或非登录shell);

  执行logout命令,退出登录shell(不能退出非登录shell)。

1.2 交互属性

  交互式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。

  非交互式:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

2、bash 的 startup 文件【CentOS 7为例】

  Linux shell是用户与Linux系统进行交互的媒介,而bash作为目前Linux系统中最常用的shell,它支持的startup文件也并不单一,甚至让人感到费解。

  例如:/etc/profile、/etc/bash.bash_logout、.bash_profile、.bashrc和.bash_logout。

  总的来说,分为两大类:“profile”系列和 “rc”系列。

  “profile”系列代表文件为:~/.bash_profile,通过 –noprofile 选项可以阻止系统加载 “profile” 系列的 startup 文件。

  原理上讲,【登陆shell】启动时会加载 “profile” 系列的 startup 文件,而【交互式非登陆shell】启动时会加载 “rc” 系列的startup文件。

2.1 登录 shell 的 startup 文件

  登录时执行顺序:/etc/profile -> ~/.bash_profile

  若 ~/.bash_profile 不存在,则换成 ~/.bash_login,还不存在则换成 ~/.profile。也就是说,如果这三个都同时存在,那就只执行 ~/.bash_profile。

  登出时执行顺序:~/.bash_logout -> /etc/bash.bash_logout。

  如果是非交互的登录 shell,则没有登出这个过程。

2.2 非登录 shell 的 startup 文件

  启动 shell 时执行:~/.bashrc或–rcfile选项指定的文件。

  “rc” 系列 startup 文件还包括 /etc/bashrc。但是系统并不直接调用这个文件,而是通过~/.bashrc 文件显式地调用它。

3、startup 文件的默认调用关系

  startup文件的加载并不像上面所述的那样简单。这是因为在CentOS中,startup文件之间还存在着默认的显式调用关系,它们是:

  1. ~/.bash_profile显式调用~/.bashrc文件;
  2. ~/.bashrc显式调用/etc/bashrc文件;

  “profile”系列文件的主要目的在于为【登录shell】设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

  Linux中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行shopt命令,而设置别名要执行alias命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用export语句。

  这两个文件同时提到了一个位置:/etc/profile.d目录。这个目录用于存放个性化配置脚本,你可以把自己需要的全局配置放入以.sh结尾的文件中,系统在执行/etc/profile和/etc/bashrc文件时,都会择机调用它们。这样做最大的好处是便于维护,而且相对更加安全。

4、最后

  对于【登录shell】而言,“交互式”执行“登陆”和“登出”相关的“profile”系列startup文件,“非交互式”只执行“登陆”相关的“profile”系列startup文件;

  对于【非登陆shell】而言,“交互式”执行“rc”系列的startup文件,而“非交互式”执行的配置文件由环境变量BASH_ENV指定。

  Linux中startup文件区分全局和个人:全局startup文件放在/etc目录下,用于设置所有用户共同的配置,除非你清楚地知道你在做的事情,否则不要轻易改动它们;个人startup文件放在~目录下,用于设置某个用户的个性化配置。

  ~/.bash_profile会显式调用~/.bashrc文件,而~/.bashrc又会显式调用/etc/bashrc文件,这是为了让所有交互式界面看起来一样。无论你是从远程登录(登陆shell),还是从图形界面打开终端(非登陆shell),你都拥有相同的提示符,因为环境变量PS1在/etc/bashrc文件中被统一设置过。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5681824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存