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用户家目录下执行
[hadoop@hclient2 ~]$ echo "invoke hclient2:~/.bashrc">>.bashrc
[hadoop@hclient2 ~]$ 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

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


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




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

2015-04-07 21:51 举报
已邀请:
1

定海偶然

赞同来自: hyhmnn

学习了
0

yzkwork

赞同来自:

学习了
0

lyhabc

赞同来自:

复杂
0

gjc159357

赞同来自:

看最后一行
0

hangtiangazi

赞同来自:

学习了。。。
0

biankm_gz

赞同来自:

学习了
0

xiaotuanyu120

赞同来自:

学习了,不过linux为什么要这么弄呢?
0

xiaotuanyu120

赞同来自:

http://www.joshstaiger.org/arc ... .html
这篇文章解释的很清楚
0

15727001301

赞同来自:

学习
0

不远晴空

赞同来自:

9#讲的很不错
0

zhangmengjun

赞同来自:

学习了
0

kevin_tao

赞同来自:

铭哥,我尝试了一下,如果是放到.bashrc的话,只有当前用户可以使用,其他用户不行,这样的话,如果是想全部用户可以用,还是要建一个custom.sh啊
0

wangzai

赞同来自:

又学习了
0

wangzai

赞同来自:

学习
0

wy1028

赞同来自:

学习了
0

gl0321

赞同来自:

写的不错
0

陈龙

赞同来自:

最后一行就是精髓啊
0

zmh0415

赞同来自:

学习了,有自定义变量都写在.bashrc中,因为bash_profile也会调用bashrc的内容
0

Coohx - 小运维

赞同来自:

这个no-login 应该是针对已经login的 用户来说的,已经登陆的后面再开新的terminal  调用的是.bashrc
0

150411100

赞同来自:

谢谢老师,学习了
0

tIl

赞同来自:

{:7_184:}
0

善思致用

赞同来自:

收到
0

标哥

赞同来自:

虽然看不懂,但是记住了结论,以后回来再看看。
0

xucaibao1979

赞同来自:

.bashrc是针对用户的,而/etc/bash_profile是针对所有用户的。
0

wanmei

赞同来自:

学习
0

xiaoshuidi

赞同来自:

搭建个环境实验下
0

chenlei82486708

赞同来自:

看了这个 终于不混淆了
0

liaochao1991

赞同来自:

一脸蒙逼,就看懂了最后一行字
0

zhaoliangsna

赞同来自:

看的不是太懂。
0

15656670719

赞同来自:

学习了
0

青青河边柳

赞同来自:

学习了
0

卯亮

赞同来自:

学习了

0

huang.z.p

赞同来自:

不是太懂,还没有好好用到这两个文件

0

switch

赞同来自:

学习了!

0

季山

赞同来自:

学习学习

0

xiao123

赞同来自:

感觉自己看懂了,一看评论瞬间懵逼了

0

天空sk

赞同来自:

受教了

0

yolks

赞同来自:

i_f48.gif

0

灵度泪 - -

赞同来自:

学习学习!

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: