深入分析解决Deepin 15环境变量修改问题,完成JAVA环境搭建

摘要:
最近使用deepin配置JAVA环境时发现不论是修改/etc/profile还是~/.profile多次尝试后均无效,不得其解,最后通过官方论坛看到大神对deepin环境配置的解释,以及寻找到相关解决方案。从开机到登录Shell过程分析环境读取顺序linux开机过程:BIOS/UEFI-˃MBR/UEFIExecutable-˃Bootloader-˃Kernel-˃initramfs-˃initinit过程会涉及到各种服务及其配置文件,最后会读取/etc/rc.local里面用户自定义的脚本,但是里面如果有环境变量之类的是不起作用的,因为读取这个文件时环境变量的配置还没启动生效。

最近使用deepin配置JAVA环境时发现不论是修改/etc/profile还是~/.profile多次尝试后均无效,不得其解,最后通过官方论坛看到大神对deepin环境配置的解释,以及寻找到相关解决方案。为了解决这个问题跟着了baidu走了不少弯路,过程中也学到不少东西,所以梳理出来,希望不仅能对deepin用户起到帮助而且还能了解对LInux的一些运行机制。

从开机到登录Shell过程分析环境读取顺序

  • linux开机过程:
BIOS/UEFI -> MBR/UEFI Executable -> Bootloader -> Kernel -> initramfs -> init

init过程会涉及到各种服务及其配置文件,最后会读取/etc/rc.local里面用户自定义的脚本,但是里面如果有环境变量之类的是不起作用的,因为读取这个文件时环境变量的配置还没启动生效。

  • 登录Shell:

登录Shell时涉及到环境变量文件读取的顺序这里分登录Shell和非登录Shell情况讨论:

根据shell是登入shell还是非登入shell,所运行的启动脚本也会不一样,我们“su - ”是登入shell;“su ”是非登入shell

登录Shell:

~/.bash_profile —> ~/.bash_login —> ~/.profile按照顺序这三个文件

非登录Shell:

非登陆shell只会读取~/.bashrc配置文件。

深入分析解决Deepin 15环境变量修改问题,完成JAVA环境搭建第1张

(图侵删,来自cndn用户Leshami,详解见参考链接)

小结:如果直接打开终端一般是属于nologin shell没有读取到环境变量配置,因而导致环境变量“失效”

其他解决方案(最简):

讲了这么多,最后还是用这个方法最简单方便,在~/目录下新建.xsessionrc文件,然后像正常配置/etc/profile一样配置、重启即可在nologin shell情况下使用环境变量。

深入分析解决Deepin 15环境变量修改问题,完成JAVA环境搭建第2张

深入分析解决Deepin 15环境变量修改问题,完成JAVA环境搭建第3张

具体原理受限于英语水平不太明白。具体链接:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108

参考资料:

https://blog.csdn.net/leshami/article/details/77198412

https://bbs.deepin.org/forum.php?mod=viewthread&tid=37049

https://www.linuxidc.com/Linux/2012-11/74463.htm

免责声明:文章转载自《深入分析解决Deepin 15环境变量修改问题,完成JAVA环境搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python-模块分类与导入数据库(二)—— MySQL索引优化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shell (7)if 表达式

文件表达式if [ -f file ] 如果文件存在if [ -d … ] 如果目录存在if [ -s file ] 如果文件存在且非空if [ -r file ] 如果文件存在且可读if [ -w file ] 如果文件存在且可写if [ -x file ] 如果文件存在且可执行 整数变量表达式 -ne:(notequal)不相等 -gt:(great...

Linux系统时间和硬件时间设置

在linux系统中有两个时间,硬件时钟和系统时间,硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。 用date命令对系统时...

虚拟化技术实现 — QEMU-KVM

目录 文章目录 目录 前文列表 KVM QEMU QEMU-KVM QEMU-KVM 调用 KVM 内核模块启动虚拟机的流程概要 前文列表 《虚拟化技术实现 — 虚拟化技术发展编年史》 KVM KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一种用于 Linux 内核中的虚拟化基础设施。本质是一个嵌入到 Lin...

修改linux iptable规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)放在22端口下面...

python 手机app数据爬取

今天向大家介绍app爬取。@ 目录 一:爬取主要流程简述 二:抓包工具Charles 1.Charles的使用 2.安装 (1)安装链接 (2)须知 (3)安装后 3.证书配置 (1)证书配置说明 (2)windows系统安装证书配置 (3)Android手机安装证书配置 4.开启SSL监听 5.原理 6.抓包 三:抓包工具mitm...

【linux】linux下shell命令 多个变量在命令中的引用 以及重新赋值给新的变量

原本的find命令: find /apps/Devops/jenkins/workspace/swapping/target/ -name '*swapping*.jar' 错误的命令: SOURCE_PATH=/apps/Devops/jenkins/workspace SERVER_NAME=swapping SOURCE_JAR_PATH=$(f...