Linux环境变量及其配置
为什么要说这个呢?
本人喜欢使用Linux开发(工作是个硬要求,有些时候不能使用Linux,比如我上一个工作。但是有些时候呢,工作环境比较开放,我可以选择我喜欢的系统进行工作:比如我现在的工作。红红火火~,下次给大家分享我的Ubuntu).我呢对日常工作对鼠标点点点并不敏感,还是喜欢快捷的命令行。这里举例子也是,也是基于Ubuntu系统哈,其实配置都是一样的。
1、环境变量 - profile和bashrc文件的区别
如果配置过Linux的环境变量就会知道,在服务器上的Linux配置环境变量是修改/etc/profile文件。而桌面版的Linux发行版,我们会纠结使用哪个文件保存环境变量如:
- /etc/profile
- /etc/bashrc
- ~/.profile
- ~/.bashrc
shell可以分为login shell / non-log shell / interactive shell / non-interactive shell
- login shell登陆式shell,需要登陆校验用户密码后执行的shell,如su - xx ,ssh连接。
- non-login shell,非登陆式shell,通常只要是当前用户打开的终端,不去校验登陆。如 bash -c "xxx"命令、桌面系统打开终端,都是使用non-login shell方式
- interactive,交互式shell,就是通常变输入命令,边执行
- non-interactive,非交互式shell,如shell脚本。
这四种shell举例如下:
| 登陆式shell | 非登陆式shell | |
|---|---|---|
| 交互式shell | ssh 登陆,su 登陆 | 新打开一个终端 |
| 非交互式shell | 运行一个脚本 | 比较罕见,可以使用bash -l -c 启动一个看看 |
环境变量配置文件和不同的shell相关,登陆式shell,加载profile文件。非登陆式shell,不加载profile文件,加载bashrc文件。非交互非登陆shell不加载任何环境变量文件,它直接使用$BASH_ENV
- bashrc 是主要作用于non-login shell
- profile 是主要作用于login shell
- etc下是作用在全局,而~/下的文件只是作用与此用户
- etc目录下和~下的文件具有继承关系
所以我们每次登陆都会加载/etc/profile -> /.profile,而当创建新的终端时,则会加载bashrc和/.bashrc文件。其实我们配置环境变量在哪个文件内都可以起作用,如果配置到profile文件中,则需要注销重新登录或重启电脑;而配置到bashrc文件中,则只需要重新打开新的终端或source即可。如果是在/etc目录,这全部用户都可用;反之,只有此用户可用。
2、JDK环境变量配置
上面我们说过了profile和bashrc两种文件的区别,而配置jdk环境变量我们应当配置在哪个文件中呢?
首先,我们通常在server中配置环境变量通常都是直接修改/etc/profile文件,为什么这样干?因为企业中一个服务器,因为每个人的权限不同,会产生很多很多用户使用这台server,而server通常是用来部署服务,所以不管哪个用户登录到此server上,都要能够使用到java的环境变量,这种全部用户都可使用且冗余环境没什么影响的时候,通常选择一个全局的配置项。
然而如果是个人电脑呢?哈哈,我呢同样是建议使用全局配置。为啥?因为Linux系统,是一个天生多用户操作系统,且我们既然涉及到环境变量配置,少不了是用来做开发。所以日常使用中会经常切换用户(比如普通用户切换到root)如果只在普通用户的home下配置.bashrc环境,切换到root后是没有java环境的,这样我们还要再重新配置。
1. JDK下载(openJDK)
- 我这里使用JDK11,jdk11下载:https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
- 其他版本下载地址:https://jdk.java.net/
- Open jdk其实已经趋于成熟,本质上和Oracle jdk没有什么区别。现在Oracle jdk下载已经需要登录了,所以还是OpenJdk省时间。我们常用的jdk版本无非是jdk8和jdk11,如果是自己开发,选择一个更高版本的吧,即能促进自己的进步又能学习更新的技术。老的早晚会被淘汰。
- jdk安装目录:/usr/local/jdk11
2. JDK11环境变量配置 - 修改profile文件
sudo cp /etc/profile /etc/profile.bak
sudo vim /etc/profile
# 在文件末尾追加
export JAVA_HOME=/usr/local/jdk11
export PATH=$JAVA_HOME/bin:$PATH
# 因为jdk11中已经不包含jvm的环境了,所以我们就没必要去配置CLASSPATH,如果使用jdk8,如下
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 修改完profiles文件需要注意一个问题
上述配置完成后,如果是桌面环境,使用 source /etc/profiles 只能使当前会话java环境变量生效。如果要生效,需要重新登录或重启电脑。
3. JDK11环境变量配置 - 使用profile.d目录
都1202了,我呢,还是希望大家别在使用修改/etc/profile文件的方式去配置环境变量了。/etc/profile中的内容是非常重要的,一旦因误操作(因为大家都是使用vim,万一在某一行多按了两下dd)导致环境变量错误是得不偿失的。
那么多次,我们到/etc目录下,难道大家就没有发现存在一个目录: /etc/profile.d 吗?通常Linux中xxx.d的目录都是自动加载配置文件的目录,所以我们也只需要在里面新建个文件即可。虽然说不是直接修改的profile文件,但本质上是一样的,同样是登录时才会重新加载profile文件及其profile.d文件夹下的变量。所以桌面环境需要重新登录。
cd /etc/profile.d
sudo vim dev-soft-path.sh
# 在文件中添加Java环境变量即可
export JAVA_HOME=/usr/local/jdk11
export PATH=$JAVA_HOME/bin:$PATH
# 因为jdk11中已经不包含jvm的环境了,所以我们就没必要去配置CLASSPATH,如果使用jdk8,如下
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4. 检查环境变量配置是否生效
- 修改profile类文件:需要重新登录
- 修改bashrc类文件:当前会话只需要执行 source ~/.bashrc重新加载环境变量;新创建会话会自动加载。
# 执行一下java命令查看java环境变量是否达到期望
$ java
$ javac
$ java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
3、Maven环境变量配置
配置Maven环境变量需要依赖Java环境,否这无法执行mvn命令。
Maven是我们开发中最最常用的一个包管理工具了吧。所以我们配置了Maven的环境变量,就能直接在终端中使用命令打包,释放了ide,也减少了在ide中的配置,习惯了用起来很爽的。Maven环境变量的配置和JDK环境变量是差不多的,也可以所是一样的。
1. 下载Maven包
官方下载地址:https://archive.apache.org/dist/maven/maven-3/
清华源:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/
官方下载比较慢,所以大家一定要学会使用国内源。学习Linux也是一样的,如果不使用国内源的话,网速会调教你的。清华源与163算是两个比较古老的国内源了,都是非常挺稳定且网速跟的上的。
- 安装地址:/usr/local/maven3
2. 配置Maven环境变量 - 修改/etc/profile
#解压 -C 指定解压目录
sudo tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven3
#复制Maven文件路径
# 如:/usr/local/maven3
sudo cp /etc/profile /etc/profile.bak
sudo vim /etc/profile
# 在profiles文件末尾加上
# maven
export MAVEN_HOME=/usr/local/maven3
export PATH=$PATH:$MAVEN_HOME/bin
修改后重新登陆后生效
3. 配置Maven环境变量 - 使用/etc/profile.d文件夹
cd /etc/profile.d
sudo vim dev-soft-path.sh
# 添加Maven环境变量即可
export MAVEN_HOME=/usr/local/maven3
export PATH=$PATH:$MAVEN_HOME/bin
修改后重新登陆生效
4. 检查配置是否生效
- 修改profile类文件:需要重新登录
- 修改bashrc类文件:当前会话只需要执行 source ~/.bashrc重新加载环境变量;新创建会话会自动加载。
# 执行mvn命令
$ mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/maven3
Java version: xxxx, vendor: Oracle Corporation, runtime: xxxx
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "5.8.0-41-generic", arch: "amd64", family: "unix"
4、Maven配置修改
Maven默认的本地仓库地址是/path/to/local/repo,远程仓库默认:http://my.repository.com/repo/path
所以如果使用默认的,会下载jar包特别慢。
- 设置本地仓库地址
<localRepository>${HOME}/.repository</localRepository>
- 添加国内Maven镜像
<!-- 阿里云仓库服务:https://maven.aliyun.com/mvn/guide -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Alibaba</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
Linux环境变量及其配置的更多相关文章
- Linux 环境变量的配置
一. 环境变量相关的几个配置文件(针对bash): 1. /etc/profile 系统环境变量配置文件:针对整个系统的所有用户生效,系统启动后用户第一次登陆时,此文件被执行,并从/etc/prof ...
- linux环境变量的配置
1.全局环境变量 vi /etc/profile JAVA_HOME=/opt/modules/jdk1.8.0_11/ export PATH=$PATH:$JAVA_HOME/bin:$JAV ...
- Linux环境变量PS1配置
1. 说明: 在Shell下,我们能够拥有更加色慘斑斓的提示行信息.这能够通过改变bash的$PS1环境变量还设置,如以下就是提示行的一种: user@host$ root用户的提示是这种: user ...
- root用户Linux 环境变量的配置解决(-bash: jps: command not found)有关问题
可以写成:$JAVA_HOME/bin 3. source /root/.bash_profile 发现 jps 等命令运行正常了
- Linux环境变量配置方法
Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...
- Java JDK 8 安装和环境变量的配置(Linux and Windows)
Java JDK 8 的安装以及环境变量的配置(Linux and Windows) JDK(Java Development Kit)包含了Java语言的编译器,能够在这里下载: http://ww ...
- Linux中jdk的安装和环境变量的配置
我安装的linux系统版本是RedHat4 64位,jdk版本为jdk-6u10-linux-i586.bin 1.首先找到安装包的位置->进入此文件夹,此bin格式的文件可用./命令直接进行安 ...
- Linux环境变量配置全攻略
Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...
- Java java jdk在Linux下安装与环境变量的配置
java jdk在Linux下安装与环境变量的配置 by:授客 QQ:1033553122 linux环境:CentOS-6.0-x86_64-bin-DVD1.iso [root@localhost ...
- Linux下jdk的安装和环境变量的配置
Linux下jdk的安装和环境变量的配置 一.jdk的下载 方式一:在官网下载 http://www.oracle.com/technetwork/java/javase/downloads/inde ...
随机推荐
- CC2020 分享信息
CC2020是鄙人第一次参与的国际计算教育报告.CC2020报告的特色是希望面向未来的教育能走近每一个教育的利益相关者,包括家长.学生.行业雇主.政府决策制定者和学术界人士.敬请各位从自己的身份角度对 ...
- Linux 配置nginx 代理tomcat,配置ssl
我就直接干活不废话: 配置文件nginx, nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_l ...
- 『教程』mariadb的主从复制
一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...
- 百度自定义底图(瓦片图)升级 HTTPS
本文地址:https://www.cnblogs.com/veinyin/p/14338414.html 记录一下开发中遇到的问题与解决方案 使用 Leaflet 开发,设计为了美观采用百度自定义底图 ...
- Linux应用开发之【多线程开发-回调函数】
原来我一直都不懂回调函数是什么 ... Callback Function 定义:通过函数指针调用的函数 在理解这个回调函数之前我们需要先了解回调机制 回调机制在编程中体现在:特定的情况发生后,返回并 ...
- vue3.0知识整理与总结
在性能方面,对比Vue2.x,性能提升了1.3~2倍左右:打包后的体积也更小了. 非兼容的功能 一些和Vue2.x版本改动较大的语法,在Vue3存在兼容问题 v-modal 组件通信 v-for ...
- 微信小程序分享出去的页面再点进来,如何取值并且在新用户未授权的情况下,授权后跳到当前页面
1.如何点击分享的页面进来,授权后跳转到当前页面 可以在授权成功后,将openid.头像.昵称入库成功之后,标记一下,及getStorageSync // 通过code获取openid getUser ...
- getopts解析shell脚本命令行参数
getopts命令格式 getopts optstring name [arg] optstring为所有可匹配选项组成的字符串,每个字母代表一个选项.如果字母后有冒号:,表明该选项需要选择参数.比如 ...
- 3、IOC创建对象的方法
目录 3.IOC创建对象的方法 4.Spring配置 4.1.别名 4.2.Bean的配置 4.3.import 5.依赖注入 5.1.构造器注入 5.2.Set方式注入[重点] 5.3.扩展方式注入 ...
- Activiti7开发(四)-我的待办
目录 1. 查询登录用户的待办任务 2.审批 1. 查询登录用户的待办任务 private List<Task> queryMyTasks(){ String username = Sec ...