zoukankan      html  css  js  c++  java
  • 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)或重启系统时会失效。后面介绍如何永久保持环境变量的修改效果。

        

  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9657138.html
Copyright © 2011-2022 走看看