免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6785 | 回复: 14
打印 上一主题 下一主题

~/.profile和~/.bashrc到底有什么区别? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 15:31 |只看该作者 |正序浏览
老实说,我确实没看懂man bash中的这句话“When  an  interactive  shell  that is not a login shell is started, bash reads and executes commands from ~/.bashrc”

论坛徽章:
0
15 [报告]
发表于 2009-03-13 06:57 |只看该作者

回复 #13 wendaozhe 的帖子

用户目录下的
.bash_profile .bash_login .profile只执行其中一个。

论坛徽章:
0
14 [报告]
发表于 2009-03-12 23:54 |只看该作者
原帖由 drvial 于 2009-3-12 21:04 发表
/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
1首先读入的是全局环境变量设定档/etc/ ...

说的挺到位的,有一本书是《Shell Scripting》(不知道确实的中文书名叫什么,就不自己瞎翻译了。) 里面把这俩个文件的作用说的很明白。

论坛徽章:
0
13 [报告]
发表于 2009-03-12 23:11 |只看该作者

回复 #11 drvial 的帖子

罗嗦一句:2中的那三个只执行一个,debian中已经没有了前两个,只留.profile了,免得用户晕头!

论坛徽章:
0
12 [报告]
发表于 2009-03-12 21:31 |只看该作者

回复 #11 drvial 的帖子

不错,辛苦了,写得很详细

论坛徽章:
0
11 [报告]
发表于 2009-03-12 21:04 |只看该作者
/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
/etc/profile.d和/etc/inputrc
2然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取
~/.profile,这三个文档设定基本上是一样的,读取有优先关系
3然后在根据用户帐号读取~/.bashrc
至于~/.profile与~/.bashrc的不区别
都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
ps:刚学linux,今天刚好到介绍这,这是我理解的,具体有什么不同,不知道

[ 本帖最后由 drvial 于 2009-3-12 21:05 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-03-12 20:10 |只看该作者
你可以加一句到.bashrc
echo "yes"
然后
1)你logout
2)login,屏幕上会出现"yes",因为.profile在login时会被执行,而.profile里一般都有:
    if [ -f ~/.bashrc ]; then
        .     ~/.bashrc
    fi
3)在已经登录的情况下,你再输入bash命令,进入一个交互式的bash(非login程序启动的),这时屏幕上又会有"yes",因为.bashrc会被bash执行,而.profile不被执行.

以上供参考

论坛徽章:
0
9 [报告]
发表于 2009-03-12 17:56 |只看该作者
在普通交互shell(非login shell)启动时,bash获取并执行~/.bashrc中的命令行。

印象中login shell是指登录服务器启动的shell,还有su -l启动的shell等等,就是带“login”参数的。不确定,再回去找找看……

论坛徽章:
0
8 [报告]
发表于 2009-03-12 17:22 |只看该作者
谁还是翻译一下LZ的那句话比较实在

论坛徽章:
0
7 [报告]
发表于 2009-03-12 15:48 |只看该作者
如果用户的主目录下找到.bash_profile 那么在执行完/etc/profile后,将执行这个文件,如果.bash_profile找不到,找另一个文件.bash_login 如果.bash_login也不存在,再找用户目录下的.profile并执行,只对这三个文件中的一个进行执行操作。
[root@localhost ~]# cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP