Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1552160
  • 博文数量: 157
  • 博客积分: 1776
  • 博客等级: 上尉
  • 技术积分: 1786
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-19 10:49
文章分类

全部博文(157)

文章存档

2018年(1)

2017年(12)

2015年(6)

2014年(17)

2013年(51)

2012年(65)

2011年(5)

分类: LINUX

2018-07-04 20:52:46

刚开始装maven时,我们会把mvn的环境变量配置在~/.bash_profile文件中,而当你安装zsh后,会发现mvn命令不起作用了,好像没有装一样。其原因还是在启动linux或终端时各个配置文件的先后加载问题及作用域问题。


先打开.zshrc文件,加入mvn的环境变量配置:
vim .zshrc

export M2_HOME=/opt/maven/apache-maven-3.5.0
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin:$M2_HOME/bin"


     然后按esc键后,输入命令:wq进行保存退出,记住冒号不可少。重启终端,会发现mvn命令可用。


那为什么会出现这种原因呢,是因为这些系统文件会存在一个优先执行顺序,首先在登录时,先执行的是/etc/profile文件。


然后在启动用户目录下的~/.bash_profile、~/.bash_login或~/.profile文件中的其中一个,执行顺序为~/.bash_profile、~/.bash_login、~/.profile。如果~/.bash_profile文件存在的话,一般还会执行~/.bashrc文件。若要退出shell时还会执行~/.bash_logout文件。


    所以不难发现,当在zsh下执行各项命令时,此时~/.zshrc文件则已经执行呢。而~/.bash_profile文件没有执行,所以在其中配置的mvn参数不会加载。其实有两种方法可以解决,一种是楼主上面操作的方法,还有一种与第一种类似,就是在~/.zshrc文件中加入source  ~/.bash_profile命令即可。原理都是一样,即是在执行zsh相关的文件时会加载到mvn的相关配置。


   简单介绍一下各个文件的作用域:


         (1)/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。


         (2)/etc/bashrc:为每一个运行bash shell的用户执行次文件。当bash shell被打开时,该文件被读取。


         (3)~/.bash_profile:每个用户都可以使用该文件输入专用与自己使用的shell信息,当用户登录时,该问价仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。


         (4)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该 文件被读取。


         (5)~/.bash_logout:当每次退出系统时(退出bash shell),执行该文件。另外,/etc/profile中设定的变量可以作用于任何用户,而~/.bashrc等中设定的变量只能继承/etc/profile中的变量,是“父子”关系。


         (6)~/.bash_profile是交互式、login方式进入bash运行的~/.bashrc是交互式non-login方式进入bash运行的通常二者设置大致相同,所以通常前者会调用后者。

阅读(4642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~