计算机的启动过程,linux启动

计算机启动:
https://www.ruanyifeng.com/blog/2013/02/booting.html
Linux启动:
Debian: http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html
CentOS5/6/7:https://www.linuxidc.com/Linux/2017-03/141966p2.htm
CentOS7:
https://www.codenong.com/cs106879828/
https://www.centosdoc.com/system/194.html
https://juejin.cn/post/6844904105953984526

程序员一般关心启动shell时的初始化主要是如何加载配置项:

【Shell initialization files】https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html

我们时常远程执行脚本或者 (sh some.sh)时会遇到缺少环境变量的问题,其实就是因为我们使用的是非交互式非登录shell。该模式下,加载的BASH_ENV定义的文件

交互式shell和非交互式shell、登录shell和非登录shell:

avatar
http://hazirguo.github.io/articles/2017/bash_login_interactive_mode.html
http://sstask.github.io/2016/04/18/bashmode/
https://blog.csdn.net/MyySophia/article/details/114015230

查看登录式:shopt login_shell

# 如新起一个bash:
-> bash
-> shopt login_shell
login_shell    	off

# ssh 一个ip
ssh xxxxxxx
-> shopt login_shell
login_shell    	on

查看交互式:echo $PS1 # 非空表示交互式

->echo $PS1
\u@\h:\w>
->vi test.sh
  1 echo $PS1
  2 shopt login_shell
->sh test.sh

login_shell    	off

奇怪:这种非交互式非登陆式,如何获取到SPARK_HOME的值的?因为SPARK_HOME是export变量。

->echo $SPARK_HOME
/opt/ficlient20210106/Spark2x/spark
->vi test.sh
  1 echo $SPARK_HOME
->sh test.sh
/opt/ficlient20210106/Spark2x/spark

avatar

Debian:

Debian默认的shell是Bash,它会读入一系列的配置文件。上一步的三种情况,在这一步的处理,也存在差异。

(1)命令行登录:首先读入 /etc/profile,这是对所有用户都有效的配置;然后依次寻找下面三个文件,这是针对当前用户的配置。

  ~/.bash_profile
  ~/.bash_login
  ~/.profile

需要注意的是,这三个文件只要有一个存在,就不再读入后面的文件了。比如,要是 ~/.bash_profile 存在,就不会再读入后面两个文件了。

(2)ssh登录:与第一种情况完全相同。

(3)图形界面登录:只加载 /etc/profile 和 ~/.profile。也就是说,~/.bash_profile不管有没有,都不会运行。

avatar

用户进入操作系统以后,常常会再手动开启一个shell(如 sh sh some.sh)。这个shell就叫做 non-login shell,意思是它不同于登录时出现的那个shell,不读取/etc/profile和.profile等配置文件。

non-login shell的重要性,不仅在于它是用户最常接触的那个shell,还在于它会读入用户自己的bash配置文件~/.bashrc。大多数时候,我们对于bash的定制,都是写在这个文件里面的。(转载者评论:不一定会加载~/.bashrc

CentOS7

启动时加载文件原理和顺序,当前各系统没看到不同。
avatar
avatar
avatar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值