您的位置:首页 > 运维架构 > Linux

Linux下JDK的安装步骤以及相关路径的查找

2016-11-28 16:54 309 查看

Linux下JDK的安装步骤以及相关路径的查找

本文章主要介绍了Linux下安装JDK的具体步骤以及每个步骤下所隐含的系统原理:

Linux下JDK的安装步骤以及相关路径的查找
etcbashrc与etcprofile 区别

Shell的概念
bashrc 和 profile 的区别

profile

bashrc

期望的执行顺序

实际安装注意事项
在Centos 65 中

补充说明
未完成内容

作者注

/etc/bashrc与/etc/profile 区别

一般的Linux系统可能会有

/etc/profile

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

如果对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效。

/etc/bashrc

为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

如果你想对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。

~/.bash_profile

每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

~/.bashrc

该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)

此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效, /etc/bashrc对所有用户新打开的bash都生效,但~/.bashrc只对当前用户新打开的bash生效。

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.

~/.bash_profile 是交互式、login 方式进入bash 运行的;

~/.bashrc 是交互式 non-login 方式进入bash 运行的;

对于 ubuntu 或 debian 来说, /etc/bashrc 不会存在,取而代之的是/etc/bash.bashrc 文件.

深入理解这些文件的意义和区别需要了解Shell的概念。

Shell的概念

系统的 shell 有很多种, 比如 bash, sh, zsh 之类的, 如果要查看某一个用户使用的是什么 shell 可以通过 finger [USERNAME] 命令来查看. 我们这里只说 shell 是 bash 的情况, 因为如果是 sh 或者其他 shell 显然不会运行 bashrc 的.

login shellno-login shell

login shell 代表用户登入, 比如使用 “su -“ 命令, 或者用 ssh 连接到某一个 服务器上, 都会使用该用户默认 shell 启动 login shell 模式.

该模式下的 shell 会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的 bashrc 文件, 所以一般在 /etc/profile 或者 ~/.profile 里我们会手动去 source bashrc 文件.

而 no-login shell 的情况是我们在终端下直接输入 bash 或者 bash -c “CMD” 来启动的 shell.该模式下是不会自动去运行任何的 profile 文件.

interactive shellnon-interactive shell

interactive shell 是交互式shell, 就是用来和用户交互的, 提供了命令提示符可以输入命令.

该模式下会存在一个叫 PS1 的环境变量, 如果还不是 login shell 的则会去 source /etc/bash.bashrc 和 ~/.bashrc 文件

non-interactive shell 则一般是通过 bash -c “CMD” 来执行的bash.

该模式下不会执行任何的 rc 文件, 不过还存在一种特殊情况这个我之后详细讲述

在可能存在的模式组合中 RC 文件的执行

SSH login, sudo su - [USER] 或者 mac 下开启终端

ssh 登入和 su - 是典型的 interactive login shell, 所以会有 PS1 变量, 并且会执行

/etc/profile

~/.profile

在命令提示符状态下输入 bash 或者 ubuntu 默认设置下打开终端。

这样开启的是 interactive no-login shell, 所以会有 PS1 变量, 只会执行

/etc/bash.bashrc

~/.bashrc

通过 bash -c “CMD” 或者 bash BASHFILE 命令执行的 shell

这些命令什么都不会执行, 也就是设置 PS1 变量, 不执行任何 RC 文件

最特殊! 通过 “ssh server CMD” 执行的命令 或 通过程序执行远程的命令

这是最特殊的一种模式, 理论上应该既是 非交互 也是非登入 的, 但是实际上他不会设置 PS1, 但是还会执行

/etc/bash.bashrc

bashrc

这里还有一点值得注意的是 /etc/bashrc 任何情况下都不会执行.

bashrc 和 profile 的区别

看了之前那么多种状态组合, 最关键的问题是, 究竟 bashrc 和 profile 有什么区别呢?

profile

profile 是某个用户唯一的用来设置环境变量的地方, 因为用户可以有多个 shell 比如 bash, sh, zsh 之类的, 但像环境变量这种其实只需要在统一的一个地方初始化就可以了, 而这就是 profile。

bashrc

bashrc 是专门用来给 bash 做初始化的。比如用来初始化 bash 的设置, bash 的代码补全, bash 的别名, bash 的颜色. 以此类推也就还会有 shrc, zshrc 这样的文件存在了, 只是 bash 太常用了而已。

期望的执行顺序

=> 代表 在文件内部 source, 换行的 => 代表自身执行结束以后在 source, 同一行表示先 source 在执行自身

普通 login shell

/etc/profile

=> /etc/bash.bashrc

~/.profile

=> ~/.bashrc => /etc/bashrc

终端直接运行 bash

/etc/bash.bashrc

~/.bashrc => /etc/bashrc

bash -c “CMD”

什么都不执行

ssh server “CMD”

/etc/bash.bashrc => /etc/profile

~/.bashrc => | /etc/bashrc => /etc/profile

| ~/.profile

这里会有点小混乱, 因为既有 /etc/bash.bashrc 又有 /etc/bashrc, 其实是因为 ubuntu 和 debian 有 /etc/bash.bashrc 文件但是没有 /etc/bashrc, 其他的系统基本都是只有 /etc/bashrc 没有 /etc/bash.bashrc。

实际安装注意事项

在Centos 6.5 中

对于通过Rpm安装的jdk来说,如果需要卸载或者重新手动安装,请输入rpm -qa | grep jdk 来查询是否还有残留的java版本。

在使用Centos 6.5进行安装的时候,遇到了 XX is not the sudoers file 错误提示,XX是当前的Linux用户。解决步骤:

打开终端,输入 su root 命令切换当前用户XX 为 root用户。

输入 visudo (或 vi /etc/sudoers )进入权限控制器。

root ALL=(ALL) ALL 下面添加 xx ALL=(ALL) ALL 其中XX为你使用的用户。

输入:wq 保存退出。

此时该用户XX已经具备了sudo权限。

补充说明

未完成内容

在不同Linux系统中安装jdk的具体步骤

作者注

该笔记为作者平时学习中遇到的问题以及积累的经验,还有很多需要完善,将会不定期更新。

欢迎各位读者提出宝贵意见,因为笔者能力有限,也是在学习中整理知识。对知识的理解可能片面与不准确,鸣谢大家的不吝指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell jdk