linux下 bash_profile和bashrc区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下 bash_profile和bashrc区别相关的知识,希望对你有一定的参考价值。

【.bash_profile 与 .bashrc 的区别】
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.


【login shell 与 non-login shell 的区别】
1、当你直接在机器login界面登陆、使用ssh登陆或者su切换用户登陆时,.bash_profile 会被调用来初始化shell环境
Note:.bash_profile文件默认调用.bashrc文件
.bash_profile中有如下内容
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi 
2、当你不登陆系统而使用ssh直接在远端执行命令,.bashrc 会被调用
3、当你已经登陆系统后,每打开一个新的Terminal时,.bashrc 都会被再次调用。


测试准备工作
hclient2主机hadoop用户家目录下执行
[[email protected] ~]$ echo "invoke hclient2:~/.bashrc">>.bashrc
[[email protected] ~]$ echo "invoke hclient2:~/.bash_profile">>.bash_profile


Login Shell
1、窗口登陆
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel 2.6.32-279.el6.x86_64 on an x86_64


hclient2 login: hadoop
Password:
Last login: Mon Feb 25 23:03:45 on tty1
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile

[[email protected] ~]$
2、SSH 登陆
[[email protected] ~]$ ssh hclient2
Last login: Mon Feb 25 22:42:19 2013 from hserver
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile
[[email protected] ~]$
3、su 登陆
[[email protected] ~]# su - hadoop
invoke hclient2:~/.bashrc
invoke hclient2:~/.bash_profile


Non-login Shell:
Note: ssh ...[[email protected]] hostname [command]
If command is specified, it is executed on the remote host instead of a login shell.
[[email protected] ~]$ ssh hclient2 hostname
invoke hclient2:~/.bashrc
hclient2




【故若要配置环境变量之类,最保险是写在 .bashrc 文件中。因为不管是登陆还是不登陆,该文件总会被调用!

本文出自 “12601871” 博客,请务必保留此出处http://12611871.blog.51cto.com/12601871/1943306

以上是关于linux下 bash_profile和bashrc区别的主要内容,如果未能解决你的问题,请参考以下文章

Linux下bash的一些总结

linux 新建用户后,在用户目录下没有.bash_profile文件生成

.bash_profile和.bashrc的区别

linux下创建oracle用户为什么没有.bash_profile文件

linux下/etc/profile/etc/bashrc~/.bashrc 和~/.bash_profile文件的区别

linux .bash_profile在哪里