• Linux编程 12 (默认shell环境变量, PATH变量重要讲解)


    一 .概述

      默认情况下, 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)或重启系统时会失效。后面介绍如何永久保持环境变量的修改效果。

        

  • 相关阅读:
    HDOJ 2871 Memory Control(线段树区间合并与查询)
    POJ 3468 A Simple Problem with Integers(线段树成段更新)
    POJ 2923 Relocation(状态压缩 + 两次DP)
    POJ 1436 Horizontally Visible Segments(线段树区间染色查询)
    POJ 2528 Mayor's posters(离散化的线段树)
    HDOJ 3308 LCIS(线段树区间合并与查询)
    异常处理的指导原则
    CSC命令
    .NET命名空间举例
    System.DateTime
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9657138.html
Copyright © 2020-2023  润新知