linux 环境配置是一个很重要又很烦人的过程,下面简要记录一下环境变量配置的方法与原则。

系统配置文件的加载顺序

登入linux并启动一个bash shell,默认情况下这时候系统将会去寻找环境变量的设置文件,为环境变量赋值。系统环境文件读取顺序如下:

用户登录系统后首先会加载/etc/profile全局环境变量文件,这是Linux系统上默认的shell主环境变量文件。系统上每个用户登录后都会加载这个文件。

之后执行/etc/profile.d目录下的所有脚本文件,完成一些字体,颜色的设置

之后开始运行~/.bash_profile(用户环境变量文件),在这个文件中,又会去找$~/.bashrc(用户环境变量文件) 。在$~/.bashrc文件中又会去找/etc/bashrc(全局环境变量文件),若没有则不执行。

对于Vim的配置来说,在vim开启的时候将会对其进行一些基础的配置。全局配置一般在/etc/vim/vimrc或者/etc/vimrc,对所有用户生效。用户个人的配置在~/.vimrc,打开vim时自动执行。

linux bash查找执行的顺序

shell执行命令时将去linux系统中寻找指令的执行代码。寻找顺序如下

  1. 别名,使用alias创建的命令
  2. 关键字,如if,for
  3. 函数
  4. 内置指令,如cd等等
  5. 外部指令,在PATH路径中寻找

Linux 系统目录结构

以前很多的环境变量配置不明白,就是由于不清楚linux的目录结构,以及每个文件的位置。

/bin

普通用户可以使用的命令的存放目录,十分重要。例如cp,cd这种。类似的目录:/usr/bin,/usr/local/bin等等。这个目录中的文件都是可执行的。作为基础系统所需要的最基础的命令就是放在这里。

/lib

此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。类似的目录还/usr/lib,/usr/local/lib。

/home

在Linux机器上,普通用户主目录通常直接或间接地置在此目录下。用户可以在自己的目录下保存仅对自己的配置文件,定制文件,文档,数据等。

/root

用户root的$HOME目录。

/etc

全局的配置文件存放目录。系统和程序一般都可以通过修改相应的配置文件,来进行配置。类似的目录有 /usr/etc。用户也可以直接在HOME目录底下写配置文件,系统读取配置文件时,先读取HOME目录底下的文件,优先级最高。如果不存在配置文件的话,才去/etc下读取系统配置。

/usr

安装程序的时候,默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行/usr/bin下的程序。当然/usr/bin 需要加入PATH中。

/usr/local

安装本地程序的一般默认路径。当我们下载一个程序源代码,编译并且安装的时候,如果不特别指定安装的程序路径,那么默认会将程序相关的文件安装到这个目录的对应目录下。例如,安装的程序可执行文件被安装(安装实质就是复制到了/usr/local/bin下面),/usr/local/include则用来存放文件。

环境配置

因此看到这里,环境变量的配置就是针对我们安装的第三方库,它们一般存在于/usr/下的目录中,因此PATH需要添加到/usr/的路径。此外还有一种情况,就是当安装一个库时,可能会修改掉系统的文件的软链接,导致之前系统很多库无法使用。此时的做法是在用户目录下,创建虚拟环境,在虚拟环境的进行环境的配置,将配置文件写在/home/.bashrc 等文件中即可。

上面泛泛而谈,还需要大量实践来查缺补漏。

例子

安装python3.7,同时保留python3.6,python2.7等:【链接】