bash 登录时读配置文件问题

今天在控制台中登入 Debian 后,发现 bash 并不会读取家目录下的 .bashrc 文件,于是开始 man bash。以关键字 .bashrc 进行查找得到如下信息:

A login shell is one whose first character of argument zero is a -, or
one started with the --login option
一个登录 shell 指的是实参 0 的第一个字符是‘-’或者以加入 --login 选项的 shell

从上面的信息中我了解到了 login shell 的定义。login shell 与 非 login shell 在登入、退出过程中的处理是不同的。

login shell

当 bash 作为 login shell 时首先读取并执行 /etc/profile 中的内容,然后依次读取并执行 ~/.bashrc_profile,~/.bash_login, ~/.profile 中的内容

当一个 login shell 退出时 bash 会读取并执行~/.bash_logou 中的内容。

non login shell

当一个非 login shell 的交互式 shell 启动时,bash 依次读取并执行 /etc/bash.bashrc, ~/.bashrc 中的内容

问题进一步描述

我在终端中第一次登录时,启动的 shell 为交互式的 login shell,因此不会读取并执行 ~/.bashrc 中的内容。而在 login shell 中执行 bash 命令,则启动了一个非 login shell 的交互式 shell,因此会读取并执行 ~/.bashrc 文件中的内容。

解决方案

如果你要在这两种不同的 shell 登录时都能加载 .bashrc 配置文件,那么你可以修改 .profile 文件,在其中加入加载 .bashrc 文件的操作。

下面是一个示例:


    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi

上面的示例实现的功能是判断家目录下是否存在普通文件 .bashrc,如果存在则加载此文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值