首页 > 系统相关 >Linux环境变量及其配置

Linux环境变量及其配置

时间:2022-12-04 20:22:52浏览次数:69  
标签:profile 文件 shell 配置 etc 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 启动一个看看

参考:https://askubuntu.com/questions/879364/differentiate-interactive-login-and-non-interactive-non-login-shell

环境变量配置文件和不同的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>

标签:profile,文件,shell,配置,etc,Linux,环境变量
From: https://www.cnblogs.com/cnlangyu/p/16950604.html

相关文章

  • 思科设备HSRP配置命令
    Cisco(config-if)#standby1ip10.1.1.254 //配置HSRP虚拟地址Cisco(config-if)#standby1priority120 //配置HSRP优先级,默认为100,越大越优Cisco(config-if)#stan......
  • 思科华为设备VRRP配置命令对比
    Cisco(config-if)#vrrp1ip10.1.1.254[Huawei-GigabitEthernet0/0/0]vrrpvrid1virtual-ip10.1.1.1//创建VRRP备份组并给备份组配置虚拟IP地址Cisco(config-if)#vr......
  • Samba服务配置
    安装samba软件包:[root@w~]#yuminstallsamba-y创建系统用户:[root@w~]#useraddwww配置samba共享文件smb.conf:[root@w~]#vim/etc/samba/smb.conf#最后一行添加[www]......
  • Linux下双网卡绑定bond0,1,4
    一:原理:linux操作系统下双网卡绑定有七种模式。现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多。而一般企业都会使用linux操......
  • Linux使用 RPM 安装 Kibana
    参考地址:https://www.elastic.co/guide/en/kibana/8.5/rpm.html#rpm-repo1.下载并安装公共签名密钥rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearch......
  • Linux中的screen命令的用法
    screen命令的用法在服务器上搭建一些服务的时候,经常要用到screen命令。某些服务开启的时候需要占据一整个控制台,如果关闭了就会导致进程终止。这就成了类似单进程的效果。......
  • Linux使用 RPM 安装 Logstash
    参考网站:https://www.elastic.co/guide/en/logstash/8.5/installing-logstash.html#_yum1.下载并安装公共签名密钥rpm--importhttps://artifacts.elastic.co/GPG-KEY-......
  • 【Redis】主从配置
     dockerpullredis:6.0.3 Master配置bind0.0.0.0port6378requirepass123456#关闭持久化appendonlyno#允许远程连接protected-modenoSlaveA配置......
  • Nginx之两个前端项目用同一个后台项目,如何配置配置文件?
    Nginx最被人熟知的作用就是反向代理。反向代理:因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据......
  • adb环境配置/abd连接模拟器(win)
    1、准备platform-tools工具包,并解压该工具包(一般放在非c盘的位置)下载地址:http://adbdownload.com/2、解压后添加环境变量系统变量path中添加环境变量,为adb.exe所在的文......