~/.bashrc的故事

明明的一台机器,不自动运行.bashrc了,为啥呢?

查:

vim ~/.bashrc
.bashrc的头注释说明bash 的non-login模式shell
man bash
说这个文件是用户的个性化设置文件,登录个人用户的时候执行,在/etc/bash.bashrc进行系统初始化,当为sh环境的时候默认关闭
 
至此,问题基本可以解决,改passwd用户的shell默认启动器即可。
 

闲着没事,再往下看看。

apt source bash
下载源码 vim shell.c
bash 的实现程序上说明登录模式shell和sh不执行.bashrc,不过都会执行/etc/profile。
 

那它怎么运行的呢?

查:

以ubuntu 18.04为例:
ps -auxefww >> ps.txt
获取进程树
cat /etc/init.d/gdm3
apt source gdm
vim  ./daemon/gdm-session-worker.c
gdm登录的时候遍历passwd_info信息,获取环境设置的配置内容,如果配置中有shell值则设置为指定shell,没有设置为bash
cat /etc/init.d/ssh
 
内核->init
init->/etc/init.d/gdm3      拉起/lib/systemd/systemd-logind服务
init->/bin/login -> bash   在用户登录的时候,启动bash子进程检测,根据检查结果,选择执行profile bashrc等脚本设置用户shell环境
  (bash INVOCATION_ID=fb37824179b44bc3a61c51f62fabd8d1
    TERM=linux
    JOURNAL_STREAM=9:46620 HOME=/root
    SHELL=/bin/bash
    USER=root LOGNAME=root
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    LANG=en_US.UTF-8
    MAIL=/var/mail/root XDG_SESSION_ID=3
    XDG_RUNTIME_DIR=/run/user/0
    DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
    XDG_SEAT=seat0 XDG_VTNR=1
    HUSHLOGIN=FALSE)
init->/etc/init.d/ssh ->bash       拉起/usr/sbin/sshd服务,ssh client连接成功之后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值