zoukankan      html  css  js  c++  java
  • Linux Shell基础 环境变量

    环境变量 

     环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量。用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的所有子 Shell 中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的 Shell 中永久生效。如果环境变量不写入配置文件,那么当前 Shell 一旦终止,这个环境变量就会消失。

    在 Linux 中一般通过环境变量配置操作系统的环境,如提示符、查找命令的路径、用户家目录等,这些系统默认的环境变量的变量名是固定的,我们只能修改变量的值。

    环境变量设置

    t通过 export 命令将变量声明为环境变量。命令如下:

    [root@localhost ~]# export JAVAHOME="/usr/local/bin/jdk-8u131"

    也可以先把变量声明为本地变量,再用 export 声明为环境变量,命令如下:

    [root@localhost ~]# JAVAHOME="/usr/local/bin/jdk-8u131"
    [root@localhost ~]# export JAVAHOME

    用户自定义变量和环境变量的区别就是:用户自定义变量只能在当前 Shell 中有效,而环境变量在当前 Shell 和所有子 Shell 中有效。比如:

    [root@localhost ~]# name="zhang san"
    #把姓名声明为本地变量
    [root@localhost ~]# export age="18"
    #年龄声明为本地变量
    [root@localhost ~]# gender=male
    #性别声明为本地变量
    [root@localhost ~]# export gender
    #性别升级为环境变量

    然后使用 set命令查询一下这些变量:

    [root@localhost ~]# set
    …省略部分内容…
    gender=male
    name='zhang san'
    age=18

    在当前 Shell 中可以看到这三个变量。

    再调用一次bash,也就是进入子Shell

    [root@localhost ~]# bash
     [root@localhost ~]# set
    #再次查询变量
    …省略部分输出…
    age=18
    gender=male

    在子Shell中只能看到环境变量"age"和"gender",而不能查询到用户自定义变量"name"

     环境变量查询 

    set 既可以查询所有的变量,也可以查询环境变量,也可以使用 env 命进行环境变量的查询,命令如下:

    [root@localhost ~]# env
    HOSTNAME=localhost.localdomain
    SELINUX_ROLE_REQUESTED=
    SHELL=/bin/bash
    …省略部分输出…

    其中,set 命令可以查看所有变量,而 env 命令只能查看环境变量。 

     环境变量删除

     通过unset 命令可以删除环境变量,命令如下:

    [root@localhost ~]# unset gender
    [root@localhost ~]# env | grep gender
    #删除环境变量gender

    PATH变量 :系统查找命令的路径

    脚本在 Linux 中运行时,需要使用绝对路径或相对路径指定这个脚本所在的位置。PATH 环境变量中指定了系统命令的绝对路径,PATH 变量的值是用":"分隔的路径 。如果输入了一个命令,系统就会到 PATH 变量定义的路径中去寻找是否有可以执行的程序,如果找到则执行,否则会报"命令没有发现"的错误。也可以把用户自己写的脚本复制到 PATH 变量定义的路径中,通过脚本名来直接运行,例如。

    [root@localhost ~]# cp /root/sh/hello.sh /bin/
    #复制hello.shi到/bin/目录中
    [root@localhost ~]# hello.sh
    hello world

    还可以通过将脚本对应的全路径追加到环境变量中,然后直接再通过脚本名来直接运行

    [root@localhost ~]# PATH="$PATH":/root/sh
    #在变量PATH的后面,加入/root/sh目录
    [root@localhost ~]#hello.sh
    hello world

    PS1变量:命令提示符设置

    PS1 是用来定义命令行的提示符的,可以按照我们自己的需求来定义自己喜欢的提示符。

    PS1 可以支持以下这些选项:

    • d:显示曰期,格式为"星期 月 日"。
    • H:显示完整的主机名。如默认主机名"localhost.localdomain"。
    • h:显示简写的主机名。如默认主机名"localhost"。
    • :显示 24 小时制时间,格式为"HH:MM:SS"。
    • T:显示 12 小时制时间,格式为"HH:MM:SS"。
    • A:显示 24 小时制时间,格式为"HH:MM"。
    • @:显示 12 小时制时间,格式为"HH:MM am/pm"。
    • u:显示当前用户名。
    • v:显示 Bash 的版本信息。
    • w:显示当前所在目录的完整名称。
    • W:显示当前所在目录的最后一个目录。
    • #:执行的第几条命令。
    • $:提示符。如果是 root 用户,则会显示提示符为"#";如果是普通用户,则会显示提示符为"$"。

    使用示例

    PS1 变量的默认值,如下:

    [root@localhost bin]# echo $PS1
    [u@h W]$

    默认的提示符是显示"[用户名@简写主机名最后所在目录]提示符"

    在 PS1 变量中,如果是可以解释的符号,如"u"、"h"等,则显示这个符号的作用;如果是不能解释的符号,如"@"或"空格",则原符号输出。
    修改提示符为'[用户名@当前时间当前所在完整目录]提示符'
    [root@localhost ~]# PS1='[u@	 w]$'

     注意 在PS1 变量的值要用单引号包含,否则设置不生效。而且这些提示符的修改同样是临时生效的,一旦注销或重启系统就会消失。要想永久生效,必须写入环境变量配置文件。

    LANG变量:定义系统的主语系环境

     LANG 变量的默认值如下:

     

    [root@localhost bin]# echo $LANG
    en_US.UTF-8
    使用 locale 命令查询当前系统使用的是什么语言,命令如下:
    [root@localhost bin]# locale
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    其中LANG 是定义系统语言的变量,LC_ALL 是定义整体语言的变量。可以通过文件 /etc/sysconfig/i18n 定义系统的默认语言,查看一下这个文件的内容,如下:
    [root@localhost src]# cat /etc/sysconfig/i18n
    LANG="zh_CN.UTF-8"
    如果系统重启,则会从默认配置文件 /etc/sysconfig/i18n 中读出系统字符集,然后赋予变量 LANG,让这个字符集生效。 
     
  • 相关阅读:
    如何在自定义端口上运行 Spring Boot 应用程序
    如何重新加载Spring Boot 上的更改,而无需重新启动服务器
    JavaConfig
    常用的linux指令
    接口绑定有几种实现方式,分别是怎么实现的?
    JDK,JRE,JVM三者关系
    final finally finalize区别
    execute,executeQuery,executeUpdate的区别是什么?
    相对于Statement,PreparedStatement的优点是什么?
    JDBC访问数据的基本步骤是什么
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9997631.html
Copyright © 2011-2022 走看看