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

本文部分参考Josh Staiger文章。

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

    • 前言
    • login shell 和 non-login shell
      • login shell
      • non-login shell
    • 为什么需要两种不同文件
    • Mac例外
      • 建议

前言

我平时使用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

Mac和Ubuntu系统下.bash_profile和.bashrc文件相关推荐

  1. u盘在ubuntu系统下突然变成只读文件

    今天在ubuntu跑完代码以后,使用u盘拷贝数据,之后直接拔了u盘,打算转到另一台windows电脑上.此时发现windows下面无法打开拷贝的文件,于是再次将u盘插入ubuntu,发现此时在ubun ...

  2. Ubuntu系统下如何创建.txt文件

    问题 在Ubutnu系统下,右键桌面会发现并没有创建文本文件的选项. 解决 首先进入模板 会发现里面是空的 然后右键在终端打开 输入如下指令 sudo gedit 文本文件 保存即可 这个时候在模板文 ...

  3. 树莓派ubuntu系统下修改config.txt文件 树莓派config.txt文件修改记录

    原文:https://www.raspberrypi.org/documentation/configuration/config-txt.md 译文:http://my.oschina.net/fu ...

  4. Ubuntu系统下通过命令查找文件或文件夹

    https://blog.csdn.net/qq_17498785/article/details/82992481

  5. 双系统:在ubuntu系统下想要移动文件到其他位置/计算机或者系统根目录下提示权限不够的解决方式

    打开一个终端输入: sudo nautilus 然后会跳出一个带有权限的文件管理器: 然后再打开一个正常的文件夹进行拖拽就好了

  6. Ubuntu系统下MRIcroN、FSL6.0.5、Freesurfer7.1.1、ANTs、MRtrix3、AFNI的安装详解——核磁共振数据处理必备

    Ubuntu系统下MRIcroN.FSL6.0.5.Freesurfer7.1.1.ANTs.MRtrix3.AFNI的安装详解 一.安装MRIcroN 二. FSL6.0.5完整安装与FSLeyes ...

  7. Ubuntu系统下有效的安装gcc/icc

    Ubuntu下安装ICC编译器的方法说明 前提:Ubuntu系统的安装 自行百度 CSDN 1:在Ubuntu系统下安装gcc编译和make 输入 sudo apt-get updat sudo ap ...

  8. windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同

    windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同 介绍ubuntu系统下配置docker下GPU使用环境的文章很多,本文算是一个比较性梳理. 主要比较一下wsl ...

  9. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

最新文章

  1. NEUQ 字符串 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
  2. java 同步锁_java线程中的同步锁和互斥锁有什么区别?
  3. 一个在Windows下的ping脚本(使用WMI 的Win32_PingStatus 实现)
  4. Jmeter中JDBC链接配置 JDBC Connection Configuration
  5. 使用vagrant 安装kubernetes 无法下载box源解决办法
  6. python爬虫本科容易找工作吗_python爬虫基础学完了,我真的能找到一份工作吗?...
  7. 日志分析工具 Log Parser
  8. 匹配特殊字符的正则表达式
  9. 【Demo 0003】Java基础-数组
  10. Navicat for PostgreSQL 怎么维护数据库和表
  11. cms不支持mysql_CMS不要让MySQL为你流泪
  12. POJ1753-Flip Game
  13. 设计模式详解(链接)
  14. 【股价预测】基于matlab最小二乘法股票价格预测【含Matlab源码 348期】
  15. 大数据与云计算的关系
  16. 如何成为优秀的网络工程师,怎么做到含金量高?
  17. Java总结及面试题
  18. 怎样用计算机解决问题,如何用计算机解决问题.ppt
  19. Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\composite-element\)...
  20. 1133 - 数组基础-统计频次

热门文章

  1. MissingServletRequestPartException: Required request part ‘file‘ is not pres
  2. 高频前端面试题汇总之计算机网络篇
  3. 深度学习中的各种tricks_1.0_label_smoothing
  4. 电网能量交换的关键设备——630kW储能变流器介绍
  5. 储能变电站互动系统通讯协议 (征求意见稿)
  6. GP2Y0A21YK0F距离传感器输出特性分析及其使用(IIC总线与PCF8591AD转换)+Proteus仿真(附源码)
  7. 洛谷P1914 小书童——凯撒密码经典解法
  8. 信息学奥赛一本通 细胞
  9. 为什么要用企业邮箱?企业邮箱能给公司带来哪些好处?
  10. 迅为I.MX6ULL开发板镜像烧写