当前位置: 移动技术网 > 科技>操作系统>Linux > Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

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

2018年09月18日  | 移动技术网科技  | 我要评论

一 .概述

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

 

 

    

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网