001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz
文章目录
- 1. 下载JDK安装包
- 2. 创建安装目录
- 3. 上传并解压JDK安装包
- 4. 配置环境变量
- 5. 验证安装
- -bash: pathmunge: command not found
- 配置文件区别
- $PATH
https://dbeaver.io/
1. 下载JDK安装包
首先,需要从Oracle官方网站或其他可信赖的来源下载jdk-8u411-linux-x64.tar.gz安装包。
2. 创建安装目录
在终端中执行以下命令,创建一个用于存放JDK的目录(如果尚未创建):
sudo mkdir /usr/tools
可以选择其他目录作为安装位置,这里以/usr/tools为例。
3. 上传并解压JDK安装包
将下载的jdk-8u411-linux-x64.tar.gz文件上传到刚刚创建的目录中,然后使用以下命令解压:
sudo tar -zxvf /path/to/jdk-8u411-linux-x64.tar.gz -C /usr/tools/
将/path/to/替换为实际存放jdk-8u411-linux-x64.tar.gz文件的路径。
4. 配置环境变量
接下来,需要配置JDK的环境变量。使用文本编辑器(如vim)打开/etc/profile文件:
sudo vim /etc/profile
在文件的末尾添加以下内容:
export JAVA_HOME=/usr/tools/jdk1.8.0_411
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
请注意,jdk1.8.0_411应替换为解压后的JDK文件夹的实际名称。
保存并关闭文件后,执行以下命令使环境变量生效:
source /etc/profile
# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.pathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac
}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"
fi# Path manipulation
if [ "$EUID" = "0" ]; thenpathmunge /usr/sbinpathmunge /usr/local/sbin
elsepathmunge /usr/local/sbin afterpathmunge /usr/sbin after
fiHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; thenexport HISTCONTROL=ignoreboth
elseexport HISTCONTROL=ignoredups
fiexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002
elseumask 022
fifor i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmunge# JDK 8 Environment Variables
#export JAVA_HOME=/usr/tools/jdk1.8.0_411
#export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#pathmunge $JAVA_HOME/bin#pathmunge () {
# case ":${PATH}:" in
# *:"$1"*:)
# ;;
# *)
# if [ "$2" = "after" ] ; then
# PATH=$PATH:$1
# else
# PATH=$1:$PATH
# fi
# esac
#}export JAVA_HOME=/usr/tools/jdk1.8.0_411
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
5. 验证安装
最后,可以通过运行以下命令来验证JDK是否正确安装:
java -version
如果一切正常,将看到输出的Java版本信息,例如:java version “1.8.0_411”。
注意事项:
确保有足够的权限执行上述操作,可能需要使用sudo命令来获取管理员权限。
如果系统中已经安装了其他版本的Java,请确保更新环境变量以指向新安装的JDK。
-bash: pathmunge: command not found
在 CentOS 7 系统中,如果在执行 source /etc/profile 时遇到了 -bash: pathmunge: command not found 的错误,这意味着 /etc/profile 文件中引用了一个名为 pathmunge 的函数,但是这个函数在当前的 shell 环境中没有被定义。
pathmunge 通常是一个用于修改 PATH 环境变量的 shell 函数,在 CentOS 和其他基于 Red Hat 的系统中,这个函数有时会被定义在 /etc/profile 或与 /etc/profile.d/ 目录下的某个脚本文件中。当系统启动时,这些脚本会被执行,从而定义这个函数。
为了解决这个问题,你可以尝试以下几个步骤:
检查 /etc/profile 或 /etc/profile.d/ 下的脚本:
查看这些文件中是否有 pathmunge 函数的定义。如果没有,你可能需要手动添加这个函数,或者从其他正常的 CentOS 7 系统中复制这个函数定义到你的系统中。
手动定义 pathmunge 函数:
如果找不到 pathmunge 函数的定义,你可以在 /etc/profile 文件的末尾或者你自己的 ~/.bashrc 或 ~/.bash_profile 文件中添加以下定义:
pathmunge () { case ":${PATH}:" in *:"$1"*:) ;; *) if [ "$2" = "after" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi esac
}
这个 pathmunge 函数的作用是向 PATH 环境变量中添加一个新的路径。如果指定的路径已经存在于 PATH 中,则不会进行任何操作。否则,它会根据第二个参数(after 或其他任何值)来决定是将新路径添加到 PATH 的末尾还是开头。
重新加载配置:
在添加了 pathmunge 函数的定义之后,你需要重新加载配置以使更改生效。你可以通过执行 source /etc/profile 或重新登录你的用户账户来完成这个操作。
配置文件区别
在Linux和Unix系统中,~/.bash_profile、~/.bashrc和/etc/profile是用于配置用户环境的文件,但它们在使用和加载时机上有所区别。~/.bash_profile:
当用户登录时,bash shell会首先读取~/.bash_profile文件。
它主要用于设置环境变量、运行命令或脚本,在用户登录时进行一次性的初始化设置。
通常,~/.bash_profile会在结束时调用~/.bashrc,以确保在用户登录时也执行~/.bashrc中的设置。
这个文件是针对每个用户的,位于用户的主目录下。
~/.bashrc:
当用户打开一个新的shell(非登录shell),或者在一个已经登录的shell中开启一个新的bash实例时,~/.bashrc会被读取。
它包含用户每次打开新的bash shell时都需要运行的命令。
通常用于设置别名、函数、环境变量等,这些设置对于非登录shell也是必要的。
这个文件也是针对每个用户的,位于用户的主目录下。
/etc/profile:
这是一个全局配置文件,对所有用户都有效。
当用户登录时,系统会首先读取/etc/profile文件,然后再读取用户的~/.bash_profile或~/.profile。
通常用于设置所有用户都需要的环境变量、系统级配置等。
/etc/profile还可以包含对其他全局或特定用户配置文件的引用,如/etc/profile.d/目录下的脚本。
简而言之,~/.bash_profile和~/.bashrc是针对每个用户的个性化设置,而/etc/profile是系统级别的全局设置。这三个文件都可以用来设置环境变量和运行初始化命令,但它们的加载时机和范围有所不同。在实际使用中,根据需要进行适当的配置,以确保用户环境和系统设置符合需求。
$PATH
在配置环境变量时,$PATH的位置(在前或在后)决定了新添加的路径在搜索顺序中的位置。这通常影响的是当多个路径中存在相同名称的可执行文件时,哪个会被首先找到并执行。在您给出的配置中:bash
export PATH=$JAVA_HOME/bin:$PATH
这里将$JAVA_HOME/bin添加到了$PATH的前面。这意味着当你尝试运行一个命令时,shell会首先在$JAVA_HOME/bin目录中查找该命令。如果在这里找不到,shell才会继续沿着原来的$PATH查找。而在添加Redis的bin目录时:bash
export PATH=$PATH:/usr/local/redis/bin
/usr/local/redis/bin被添加到了$PATH的末尾。这意味着当shell沿着$PATH搜索可执行文件时,它会最后才查看/usr/local/redis/bin。为什么这样设置?这通常取决于你的具体需求和环境中可能存在的命令冲突。以下是一些可能的考虑:优先级:如果你希望$JAVA_HOME/bin中的命令优先于其他路径中的同名命令被执行,你就会把它放在$PATH的前面。这在你有多个版本的Java安装,并且想要确保使用特定版本时特别有用。
避免冲突:将新路径添加到$PATH的末尾可以减少与现有命令的冲突。例如,如果/usr/local/redis/bin中有一个名为java的可执行文件,而你将其添加到$PATH的前面,那么当你尝试运行java命令时,shell可能会错误地执行Redis目录中的java,而不是你期望的JDK中的java。
安全性和可预测性:在某些情况下,你可能不希望新添加的路径中的命令覆盖现有路径中的命令,以避免意外的行为或安全问题。将其添加到末尾可以提供更大的可预测性和安全性。
总之,$PATH中路径的顺序是一个重要的配置选择,它决定了shell如何查找和执行命令。在你的例子中,将Java路径放在前面可能是为了确保使用特定版本的Java,而将Redis路径放在后面可能是为了避免与现有命令的冲突。
相关文章:

001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz
文章目录 1. 下载JDK安装包2. 创建安装目录3. 上传并解压JDK安装包4. 配置环境变量5. 验证安装-bash: pathmunge: command not found配置文件区别$PATH https://dbeaver.io/ 1. 下载JDK安装包 首先,需要从Oracle官方网站或其他可信赖的来源下载jdk-8u411-linux-x64…...

Revit二次开发-WPF ProgressBar 执行程序中显示进度条
Revit开发执行命令时如果时间长,界面会顶住,导致用户误以为程序未响应,解决方法:增加WPF ProgressBar 进度条执行程序中显示进度条,提示命令还是进行中, 实现流程: 新建一个WPF,Window启动时加载一个事件Loaded=“Window_Loaded”,用于显示进度条在WPF后台,新建一个异…...

React:构建Web应用的未来
引言 在不断发展的Web开发领域,React已经成为一股主导力量,重塑了我们构建用户界面和交互式应用的方式。React由Facebook(现Meta)开发,由于其创新的基于组件的架构、高效的虚拟DOM渲染和声明式编程风格而广受欢迎。在…...

【Elasticsearch】Centos7安装Elasticsearch、kibana、IK分词
目录 本文安装包下载地址注意安装elasticsearch1.上传文件2.解压elasticsearch-6.3.1.tar.gz3.开启远程连接权限4.修改其他配置[root用户操作]5.重启虚拟机6.启动es7.外部访问 安装kibana-61.解压2.配置3.启动kibana4.访问5.在开发工具中做数据的增删改查操作 安装IK分词1.wind…...

IDEA中各种Maven相关问题(文件飘红、下载依赖和启动报错)
错误情况 包名、类名显示红色、红色波浪线,大量依赖提示不存在(程序包xxx不存在) 工程无法启动 一、前提条件 1、使用英文原版IDEA 汉化版的可能有各种奇怪的问题。建议用IDEA英文版,卸载重装。 2、下载maven,配置环…...

Android 13 VSYNC重学习
Android 13 VSYNC重学习 引言 学无止境,一个字干就完事! 源码参考基于Android 13 aosp! 一. Android VSync模块开胃菜 在开始正式的分析之前,我们先简单对Android的Vsync模块简单介绍下,如下图所示,其中: HW_VSync是…...

std::move和左值右值
引用:windows程序员面试指南 std::move std::move 是 C 标准库中的一个函数模板,用于将一个左值(左值引用)转化为右值引用,从而实现移动语义。 移动语义是一种可以将资源(如内存)从一个对象转…...

QT学习备份
2023年1月2日09:00:32 1.信号/槽编辑器 发送者:控件 信号:是控件发出的信号 接受者:包含控件的容器 槽:程序上用slot标识的方法 2.Q_OBJECT宏 只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用…...

【wiki知识库】03.前后端的初步交互(展现所有的电子书)
📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂前端配置文件补充 三、🌏前端Vue的改造 四、💡总结 一、🔥今日目标 在上一篇文章当中,我已带大家把后端的一些基本工…...

AOP——学习
AOP(面向切面编程)是Spring框架的重要特性之一,用于分离关注点并处理横切关注点,如日志记录、安全性和事务管理。在面试中,AOP相关的问题通常会涉及基本概念、应用场景、实际使用、以及与其他编程范式的比较。以下是一…...

Linux静态库、共享动态库介绍、制作及使用
参考学习:Linux下的各种文件 、动态库基本原理和使用方法,-fPIC选项的来龙去脉 、Linux静态库和动态库分析 文章写作参考:Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com) 一.Linux共享库、静态库、动态库详解 使用G…...

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)
【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO(Coordinate Format)2. CSR(Compressed Sparse Row Format) 二、Paddle稀疏张量支持1. 创建 C…...

Linux系统维护
1. 批量安装部署 2. 初始化配置 3. 禁用Selinux 永久更改 SELinux 配置: 编辑 SELinux 配置文件:使用文本编辑器打开 /etc/selinux/config 文件: 在配置文件中,找到 SELINUX… 的行。将其值更改为以下选项之一: e…...

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)
0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力,它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而,昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…...

蓝牙设备中的UUID
文章目录 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址,相对固定。iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 …...

网络之再谈体系结构
大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就…...

在flutter initState 方法,触发 setState导致循环执行
在Flutter中,如果你在initState中调用了一个方法,并且这个方法可能导致状态更新,这可能会引起无限循环,因为每次状态更新都会再次调用initState。 为了避免这种情况,你应该检查调用的方法是否会导致状态更新ÿ…...

JavaScript字符串方法
charAt() 方法:返回指定索引处的字符。 示例: let str "Hello World"; console.log(str.charAt(0)); // Output: "H" console.log(str.charAt(6)); // Output: "W"charCodeAt() 方法:返回指定索引处字符的 Un…...

YD/T 2698-2014 《电信网和互联网安全防护基线配置要求及检测要求 网络设备》标准介绍
编写背景 随着互联网技术的飞速发展,网络设备的安全问题日益凸显。为了加强电信网和互联网的安全防护,保障网络环境的稳定和用户信息的安全,YD/T 2698-2014标准应运而生。此标准旨在为网络设备提供一套基线配置要求,以及相应的安…...

QCC30XX如何查找本地地址码
查找本地地址段/********************************************************************** Copyright (c) 2016 - 2017 Qualcomm Technologies International, Ltd. FILE NAME sink_private_data.c DESCRIPTION This module works as a container for all private and common…...

基于 DCT 的图像滤波
需求分析 对于图像去噪这一需求,我们可以通过DCT(离散余弦变换)算法来实现。DCT是一种基于频域的变换技术,可以将图像从空间域转换为频域,然后通过滤波等处理方式进行去噪。 针对这一需求,我们需要进行以下…...

spdlog日志库源码:自定义异常类spdlog_ex
自定义异常类spdlog_ex 标准库异常类(std::exception)系列,能满足大多数使用异常的场景,但对系统调用异常及错误信息缺乏支持。spdlog通过继承std::exception,扩展对系统调用的支持,实现自定义异常类spdlo…...

3.每日LeetCode-数组类,爬楼梯(Go,Java,Python)
目录 题目 解法 Go Java Python 代码地址:leetcode: 每日leetcode刷题 题目 题号70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入ÿ…...

单节点11.2.0.3参数文件恢复到RAC11.2.0.4启动失败
问题描述 通过pfile生成spfile失败,提示DATA磁盘不存在 SQL> create spfileDATA/DXJ/spfiledxj.ora from pfile/home/oracle/initdxj20240529.ora; create spfileDATA/DXJ/spfiledxj.ora from pfile/home/oracle/initdxj20240529.ora * ERROR at line 1: ORA-1…...

Windows电脑高颜值桌面便利贴,便签怎么设置
在这个看颜值的时代,我们不仅在衣着打扮上追求时尚与美观,就连电脑桌面也不愿放过。一张唯美的壁纸,几款别致的小工具,总能让我们的工作空间焕发出不一样的光彩。如果你也热衷于打造高颜值的电脑桌面,那么,…...

代码随想录35期Day54-Java
Day54题目 LeetCode392判断子序列 核心思想:公共子序列长度达到需要判断的字符串的长度,说明是子序列 class Solution {public boolean isSubsequence(String s, String t) {if("".equals(s)) return true;int[][] dp new int[s.length()1][t.length()1];for(int…...

Ubuntu使用sudo命令
在Ubuntu系统中,使用管理员权限通常涉及到使用sudo命令。这是因为Ubuntu默认情况下不直接允许root用户登录,而是通过sudo命令来执行需要管理员权限的任务。以下是一些常见的使用管理员权限的方法: 1. 使用sudo命令 运行单个命令 如果只需要…...

三方语言中调用, Go Energy GUI编译的dll动态链接库CEF
如何在其它编程语言中调用energy编译的dll动态链接库,以使用CEF 或 LCL库 Energy是Go语言基于LCL CEF开发的跨平台GUI框架, 具有很容易使用CEF 和 LCL控件库 interface 便利 示例链接 正文 为方便起见使用 python 调用 go energy 编译的dll 准备 系统&#x…...

Go微服务: Grpc服务注册在Consul的示例(非Go-Micro)
概述 现在,我们使用consul客户端的api来把GRPC服务实现注册到consul上,非Go-Micro的形式其实,consul官方提供了对应的接口调用来实现,golang中的consul/api包对其进行了封装我们使用consul/api来进行展示 目录结构 gitee.com/g…...

Java+Swing+Mysql实现飞机订票系统
一、系统介绍 1.开发环境 操作系统:Win10 开发工具 :Eclipse2021 JDK版本:jdk1.8 数据库:Mysql8.0 2.技术选型 JavaSwingMysql 3.功能模块 4.数据库设计 1.用户表(users) 字段名称 类型 记录内容…...