欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2024-02-18 21:00:28
一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境。这些默认环境变量可以理解是上篇所讲的系统全局环境变量。 1.1 bash shell支持的Bourne变量 Bourne shell 是 UNIX 最初使用的 shell。下面例举几个常用的变量名。 变量名 描述 ......

一 .概述

  默认情况下, 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 目录下。

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

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

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

 

  1.2 bash shell 环境变量

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

变量名

描述

bash_subshell

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

bash_version

当前运行的bash shell 版本号。

hostname

当前主机名称

pwd

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

    下面随变演示一个,查看bash shell版本号:
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

 

  1.3   path环境变量

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

    如下图所示:mysqld服务之所以能找到,是因为它存在于/usr/sbin目录下。mysql的mssqldump工具包之所以能找到,是因为它存在于/usr/bin目录下。这二个目录都是存在于path全局变量中。而nginx服务命令却未找到。
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)
    在重新加载nginx配置文件时,会提示未找到命令
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

    下图来查找下nginx 服务是存放于哪个目录下。通过下图知道,nginx服务存在于/usr/local/nginx/sbin 目录下。而path环境变量中没有该路径。所示“提示未找到命令…“。
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

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

 

  1.4  添加path环境变量

    上面讲到了nginx服务, 下面演示将nginx服务的绝对路径,添加到path环境变量中。如下图所示:已将nginxx服务路径添加到了path环境变量中。
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

    下面来试试,在任意的虚拟目录下,执行nginx服务。下面是随意在虚拟目录的根目录下查看nginx服务, 重新加载nginx服务,该命令也找到了,下图的错误是nginx进程没有启动,与要介绍的path没有关系。
      Linux编程 12 (默认shell环境变量, PATH变量重要讲解)

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

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