Mac和Ubuntu系统下.bash_profile和.bashrc文件

Mac和Ubuntu系统下.bash_profile和.bashrc文件

本文部分参考Josh Staiger文章。


前言

我平时使用Ubuntu或者Mac。当设置shellPATH 或者其他环境变量时,你可以放在.bashrc.bash_profile其中的任何一个文件里,如果文件不存在你还可以创建一个,但是两个文件的启动有何区别?

以Ubuntu为例.bash_profilelogin shell 启动时执行而.bashrcnon-login shell 启动时执行。(Mac 情况不同,后文提到)


login shellnon-login shell

login shell

用户登录(输入用户名密码)时打开的shell,就叫做login shell。用户登录主要分三种:
命令行登录
依次寻找下面三个文件。

~/.bash_profile
~/.bash_login
~/.profile

需要注意的是,这三个文件只要有一个存在,就不再读入后面的文件了。

ssh登录
和命令行登录情况相同

图形界面登录
只加载 /etc/profile~/.profile。也就是说,~/.bash_profile 不管有没有,都不会运行。

non-login shell

用户进入操作系统以后,常常会再手动开启一个shell。这个shell就叫做 non-login shell,意思是它不同于登录时出现的那个shell,不读取/etc/profile.profile等配置文件。

non-login shell会读入用户自己的bash配置文件 ~/.bashrc。大多数时候,我们对于bash的定制,都是写在这个文件里面的。


为什么需要两种不同文件

比如你想在登录时打印一些电脑诊断信息(内存使用,在线用户等等)。你只想在每次登录的时候看到,所以将相关代码写入.bash_profile 如果你写入.bashrc 则你每次打开terminal都会打印这些信息。


Mac例外

Mac的Terminal打开的每个新shell默认为login shell只加载.bash_profile。而且,不管是ssh登录,还是在图形界面里启动shell窗口,都是如此。

建议

将下面的脚本加入.bash_profile

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

注:第二行开头的那个点,是source命令的简写形式,表示运行某个文件,写成source ~/.bashrc也是可以的。[ -f ~/.bashrc ] 中括号内侧有空格。

这样执行.bash_profile 时也会执行.bashrc

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值