当前位置 : 主页 > 操作系统 > centos >

Linux默认shell环境变量, PATH变量重要讲解

来源:互联网 收集:自由互联 发布时间:2021-04-30
一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境。这些默认环境变量可以理解是上篇所讲的系统全局环境变量。 1.1bash shell支持的Bourne变量 Bourne shell 是 UNIX 最初

一 .概述

  默认情况下, bash shell会用一些特定的环境变量来定义系统的环境。这些默认环境变量可以理解是上篇所讲的系统全局环境变量。

  1.1 bash  shell支持的Bourne变量

    Bourne shell 是 UNIX 最初使用的 shell。下面例举几个常用的变量名。

变量名

描述

HOME

当前用户的主目录

PATH

Shell查找命令的目录列表,由冒号分隔

PS1

Shell命令行界面的主提示符

PS2

Shell命令行界面的次提示符

    如下图所示:使用echo 输出该变量名$PATH的值。值给出了shell查找命令会去的6个目录。优先最高的是/usr/local/bin 目录下。

      

    下面是主提示符与次提示符:

      

  1.2 bash shell 环境变量

    下面只是随意列出了几个变量名。像BASH_SUBSHELL在介绍子shell中有讲过。

变量名

描述

BASH_SUBSHELL

当前子shell环境的嵌套级别。

BASH_VERSION

当前运行的bash shell 版本号。

HOSTNAME

当前主机名称

PWD

当前工作目录,对应内部命令小写pwd

    下面随变演示一个,查看bash shell版本号:
      

  1.3  PATH环境变量

    上面讲到了PATH变量,它的作用是:当你在shell命令行中输入一个外部命令时。Shell必须搜索系统来找到对应的程序。 PATH环境变量定义了用于进行命令和程序查找的目录。上面列出了要查找的6个目录。如果命令或者程序的位置没有包括在PATH变量中,那就必须使用绝对路径来查找,否则shell是无法找到的。找不到,它会产生一个错误信息。

    如下图所示:mysqld服务之所以能找到,是因为它存在于/usr/sbin目录下。Mysql的mssqldump工具包之所以能找到,是因为它存在于/usr/bin目录下。这二个目录都是存在于PATH全局变量中。而nginx服务命令却未找到。
      
    在重新加载nginx配置文件时,会提示未找到命令
      

    下图来查找下nginx 服务是存放于哪个目录下。通过下图知道,nginx服务存在于/usr/local/nginx/sbin 目录下。而PATH环境变量中没有该路径。所示“提示未找到命令…“。
      

    如果想在虚拟目录任意位置操作nginx服务,又不想每次都用cd绝对路径定位。有二种方法:1是前面章节所学的软链接,把nginx的绝对路径能过软链接指定到PATH环境下的一个目录下。2是将nginx绝对路径添加到PATH目录中。

  1.4  添加PATH环境变量

    上面讲到了nginx服务, 下面演示将nginx服务的绝对路径,添加到PATH环境变量中。如下图所示:已将nginxx服务路径添加到了PATH环境变量中。
      

    下面来试试,在任意的虚拟目录下,执行nginx服务。下面是随意在虚拟目录的根目录下查看nginx服务, 重新加载nginx服务,该命令也找到了,下图的错误是nginx进程没有启动,与要介绍的PATH没有关系。
      

   总结: 当初学linux的时候,每当安装了一个服务时,在终端敲 bash执行该命令,经常提示未找到该命令。但有些服务又可以直接找到。现在明白了, shell查找命令会去指定的PATH环境目录下查找。当有些服务安装后,该服务的bin目录并没有在PATH环境目录中。

  注意:对于PATH变量的修改,当退出终端(exit)或重启系统时会失效。后面介绍如何永久保持环境变量的修改效果。

网友评论