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)或重启系统时会失效。后面介绍如何永久保持环境变量的修改效果。
Linux编程 12 (默认shell环境变量, PATH变量重要讲解)的更多相关文章
- 【目录】linux 编程
随笔分类 - linux 编程 Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较) 摘要: 一.概述 接着上篇讲的结构化命令,最后讲到了test命令 ...
- Linux编程之变量
Bash变量与变量分类 变量命名规则 变量名必须以字母或下划线打头,名字中间只能由字母.数字和下划线组成 变量名的长度不得超过255个字符 变量名在有效的范围内必须是唯一的 在Bash中,变量的默认类 ...
- Linux系列之管理用户环境变量
前言 环境变量控制你在Linux工作环境中的外观.行为和感觉.一共有两种类型的变量: 环境变量:这些是内置于系统中的进程范围的变量,控制着系统的外观和行为.因为是进程范围的,所以它们被任何子shell ...
- shell编程之BASH变量(2)
变量命名规范 在bash中,变量的默认类型都是字符串型,定义 name = 'kk' 变量分类 用户自定义变量.变量自定义的 环境变量:这种变量中主要保存的是和系统操作环境相关的数据.变量可以自定义, ...
- LINUX中查看、添加、删除PATH以及永久添加PATH
1.查看PATH变量 echo $PATH 会出现: 路径1:路径2:路径3 2.添加PATH变量 export PATH=$PATH:新添加的路径 用此方法添加的PATH,在关闭或者重启LINUX后 ...
- Linux编程简介
Linux编程可以分为Shell(如BASH.TCSH.GAWK.Perl.Tcl和Tk等)编程和高级语言(C语言,C++语言,java语言等)编程,Linux程序需要首先转化为低级机器语言即所谓的二 ...
- 《Linux命令行与shell脚本编程大全》 第六章环境变量
很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shel ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- Linux编程 11(shell全局环境变量与局变环境变量)
一.概述 在linux中,很多程序和脚本都通过环境变量来获取系统信息,存储临时数据,配置信息.环境变量是指用来存储有关shell会话和工作环境信息,允许你在内存中存储数据,以便程序或shell中运行的 ...
随机推荐
- vue使用中遇到的,以及vue1.0到vue2.0新手踩的坑
最近再写一个vue的项目,视频中用的是vue1.0,但是现在vue已经2.0,所以踩了很多坑,先记录下来.理解有误再来修改. 路由问题 之前的路由是写在app.vue里边,而2.0的路由直接有个rou ...
- 构建器Constructor的返回值/构建器
构建器Constructor的返回值? 为什么会有这个问题? 在<Thinking in Java>中文Quanke翻译版本第四章初始化和清除,原书第五章Initialization&am ...
- C++矩阵加速经典题目:Warcraft III 守望者的烦恼 [vijos 1067]
Warcraft III 守望者的烦恼 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫"闪烁", ...
- C语言内存四区的学习总结(三)---- 栈区
接上篇内存四区的堆区的总结,下面做一些栈区的相关总结. 一.栈区的分析: 就下面测试程序 #include "stdio.h" #include "string.h&qu ...
- Notepad++编写运行python程序
Notepad++编写运行python程序. 1.菜单栏->语言->P->Python设置语言为Python 2.写好代码后ctrl+s保存文件为py文件 3.菜单栏->运行, ...
- es6面向对象
<script> class user{ constructor(name,age){ this.name=name; this.age=age; } showName(){ alert( ...
- Exp2后门原理与实践_20154305 _ 齐 帅
Exp2后门原理与实践 20154305 _ 齐 帅 2.1简单后门 一.后门工具介绍 1.netcat(nc.ncat) 是一个底层工具,进行基本的TCP UDP数据收发.常被与其他工具结合使用,起 ...
- python操作Redis安装、支持存储类型、普通连接、连接池
一.python操作redis安装和支持存储类型 安装redis模块 pip3 install redis 二.Python操作Redis之普通连接 redis-py提供两个类Redis和Strict ...
- python 变量,if,while,运算符
变量由变量名 赋值 值 a = 1 ###### 必须是一个等于号 一个等于号是赋值 变量的命名规则: 1.数字,字母,下划线组成 2.数字不能在前面 3.区分大小写 4.禁止使用python关键字 ...
- “PurMVC”在Unity中的应用
序章: 这是"游戏设计进阶技巧篇"内容,游戏中不使用如下技巧也可以正常运行,但是有了它以后可以增加项目的可读性,使功能”模块化“,”可视化“,”装逼化“(慢慢的恶意>,> ...