.bash_profile和.bashrc的说明(转)

本文详细解析了Linux系统中各种Shell配置文件的作用与区别,包括/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc及~/.bash_logout等。阐述了它们之间的关系以及在不同场景下的执行情况。
摘要由CSDN通过智能技术生成
[b]/etc/profile[/b]:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

[b]/etc/bashrc[/b]:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

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

[b]~/.bashrc[/b]:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。

[b]~/.bash_logout[/b]:当每次退出系统(退出bash shell)时,执行该文件。


另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
[b]~/.bash_profile 是交互式,以login 方式进入bash 运行的。[/b]
[b]~/.bashrc是交互式,以non-logi 方式进入bash 运行的。[/b]
通常二者设置大致相同,所以通常前者会调用后者。

* 每次bash作为login shell启动时会执行.bash_profile。
主要有(我所知道的)有以下几种情形:
[b]a) 每次登录到服务器时默认启动的shell[/b]
[b]b) “su -l [USER]”时进入的shell[/b]
[b]c) “bash --login”进入的shell[/b]

* 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc
常见的有:
[b]a) “su [USER]”进入的shell[/b]
[b]b) 直接运行“bash”命令进入的shell。[/b]

** 注意
1, 在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的bash不是interactive shell。
2, bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,但它不是普通的shell。
* 一般.bash_profile里都会调用.bashrc
尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。
`-------------------------------------
| if [ -f ~/.bashrc ]; then
|
| ~/.bashrc
| fi
`
-------------------------------------


.bash_profile显示内容如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then;
. ~/.bashrc
fi

# User specific environment and startup programs
PATH=.:$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"

export USERNAME BASH_ENV PATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值